Skip to content

Fix Catch.cmake helper by setting variable globally - #2119

Merged
horenmar merged 1 commit into
catchorg:v2.xfrom
NeroBurner:fix_Catch_cmake_helper
Dec 17, 2020
Merged

Fix Catch.cmake helper by setting variable globally#2119
horenmar merged 1 commit into
catchorg:v2.xfrom
NeroBurner:fix_Catch_cmake_helper

Conversation

@NeroBurner

Copy link
Copy Markdown
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

codecov Bot commented Dec 17, 2020

Copy link
Copy Markdown

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
Copy Markdown
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.

2 participants