Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Catch.cmake helper by setting variable globally #2119

Merged
merged 1 commit into from Dec 17, 2020

Conversation

NeroBurner
Copy link
Contributor

Description

Set _CATCH_DISCOVER_TESTS_SCRIPT helper variable globally. Otherwise in a
scoped call (like add_subdirectory()) the variable gets lost. This lost
variable results in a post build error with not much information to lead to the
root of the problem.

This enables the usage of the helper script with the following example structure

  • CMakeLists.txt (project root with add_subdirectory(external/catch2)
  • external/catch2
    • CMakeLists.txt (contents listed below)
    • contrib/Catch.cmake
    • contrib/CatchAddTests.cmake
    • catch2/catch.hpp
  • tests
    • CMakeLists.txt (add tests with catch_discover_tests(${PROJECT_NAME}))

contents of project specific helper external/catch2/CMakeLists.txt

cmake_minimum_required (VERSION 3.1...${CMAKE_VERSION})
project(Catch2 LANGUAGES CXX VERSION 2.13.3)
add_library(Catch2 INTERFACE)
target_include_directories(Catch2
  INTERFACE
    $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>
)
 # provide a namespaced alias for clients to 'link' against if catch is included as a sub-project
add_library(Catch2::Catch2 ALIAS Catch2)
include(contrib/Catch.cmake)

Set `_CATCH_DISCOVER_TESTS_SCRIPT` helper variable globally. Otherwise in a
scoped call (like `add_subdirectory()`) the variable gets lost. This lost
variable results in a post build error with not much information to lead to the
root of the problem.

This enables the usage of the helper script with the following example structure

- CMakeLists.txt (project root with `add_subdirectory(external/catch2)`
- external/catch2
  - CMakeLists.txt (contents listed below)
  - contrib/Catch.cmake
  - contrib/CatchAddTests.cmake
  - catch2/catch.hpp
- tests
  - CMakeLists.txt (add tests with `catch_discover_tests(${PROJECT_NAME})`)

contents of project specific helper `external/catch2/CMakeLists.txt`
```cmake
cmake_minimum_required (VERSION 3.1...${CMAKE_VERSION})
project(Catch2 LANGUAGES CXX VERSION 2.13.3)
add_library(Catch2 INTERFACE)
target_include_directories(Catch2
  INTERFACE
    $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>
)
 # provide a namespaced alias for clients to 'link' against if catch is included as a sub-project
add_library(Catch2::Catch2 ALIAS Catch2)
include(contrib/Catch.cmake)
```
@codecov
Copy link

codecov bot commented Dec 17, 2020

Codecov Report

Merging #2119 (34f4c6b) into v2.x (fac517d) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             v2.x    #2119   +/-   ##
=======================================
  Coverage   88.79%   88.79%           
=======================================
  Files         138      138           
  Lines        5683     5683           
=======================================
  Hits         5046     5046           
  Misses        637      637           

@horenmar
Copy link
Member

Thanks

@horenmar horenmar merged commit 2375a7f into catchorg:v2.x Dec 17, 2020
@NeroBurner NeroBurner deleted the fix_Catch_cmake_helper branch December 18, 2020 08:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants