From 031a57e7b719dce26119ac8547f167190234a763 Mon Sep 17 00:00:00 2001 From: Reinhold Gschweicher Date: Thu, 17 Dec 2020 10:28:05 +0100 Subject: [PATCH] Fix Catch.cmake helper by setting variable globally 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 $ ) # 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) ``` --- extras/Catch.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/extras/Catch.cmake b/extras/Catch.cmake index b3f90a79..a3885162 100644 --- a/extras/Catch.cmake +++ b/extras/Catch.cmake @@ -202,4 +202,5 @@ endfunction() set(_CATCH_DISCOVER_TESTS_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/CatchAddTests.cmake + CACHE INTERNAL "Catch2 full path to CatchAddTests.cmake helper file" )