diff --git a/CMakeLists.txt b/CMakeLists.txt index 4b596798..9053a33f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,7 +36,7 @@ set(BENCHMARK_DIR ${CATCH_DIR}/tests/Benchmark) set(EXAMPLES_DIR ${CATCH_DIR}/examples) # We need to bring-in the variables defined there to this scope -include(src/CMakeLists.txt) +add_subdirectory(src) # Build tests only if requested if (BUILD_TESTING AND CATCH_BUILD_TESTING AND NOT_SUBPROJECT) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index b8612581..ecc14b8f 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -20,8 +20,8 @@ add_executable( 020-MultiFile add_executable(231-Cfg_OutputStreams 231-Cfg-OutputStreams.cpp ) -StampOutLibrary(231-Cfg_OutputStreams) -target_compile_definitions(Catch2_231-Cfg_OutputStreams PUBLIC CATCH_CONFIG_NOSTDOUT) +target_link_libraries(231-Cfg_OutputStreams Catch2_buildall_interface) +target_compile_definitions(231-Cfg_OutputStreams PUBLIC CATCH_CONFIG_NOSTDOUT) # These examples use the standard separate compilation set( SOURCES_IDIOMATIC_EXAMPLES diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 227943b7..eeef8f31 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -230,19 +230,20 @@ target_include_directories(Catch2 $ ) -function(StampOutLibrary target) - add_library(Catch2_${target} STATIC +# Some tests require a full recompilation of Catch2 lib with different +# compilation flags. They can link against this target to recompile all +# the sources into the binary. +if (CATCH_BUILD_EXAMPLES OR CATCH_BUILD_EXTRA_TESTS) + add_library(Catch2_buildall_interface INTERFACE) + target_sources(Catch2_buildall_interface INTERFACE ${REPORTER_FILES} ${INTERNAL_FILES} ${BENCHMARK_HEADERS} ${BENCHMARK_SOURCES} ) - - target_include_directories(Catch2_${target} - PUBLIC + target_include_directories(Catch2_buildall_interface + INTERFACE $ $ ) - - target_link_libraries(${target} Catch2_${target}) -endfunction() +endif() diff --git a/tests/ExtraTests/CMakeLists.txt b/tests/ExtraTests/CMakeLists.txt index b9ab2384..b00ecf78 100644 --- a/tests/ExtraTests/CMakeLists.txt +++ b/tests/ExtraTests/CMakeLists.txt @@ -53,15 +53,14 @@ add_executable( DisabledExceptions-DefaultHandler ${TESTS_DIR}/X03-DisabledExcep add_executable( DisabledExceptions-CustomHandler ${TESTS_DIR}/X04-DisabledExceptions-CustomHandler.cpp ) foreach(target DisabledExceptions-DefaultHandler DisabledExceptions-CustomHandler) - StampOutLibrary(${target}) - target_compile_options( Catch2_${target} + target_compile_options( ${target} PUBLIC $<$:/EHs-c-;/D_HAS_EXCEPTIONS=0> $<$,$,$>:-fno-exceptions> ) - target_link_libraries(${target} Catch2_${target}) + target_link_libraries(${target} Catch2_buildall_interface) endforeach() -target_compile_definitions( Catch2_DisabledExceptions-CustomHandler PUBLIC CATCH_CONFIG_DISABLE_EXCEPTIONS_CUSTOM_HANDLER ) +target_compile_definitions( DisabledExceptions-CustomHandler PUBLIC CATCH_CONFIG_DISABLE_EXCEPTIONS_CUSTOM_HANDLER ) add_test(NAME CATCH_CONFIG_DISABLE_EXCEPTIONS-1 COMMAND DisabledExceptions-DefaultHandler "Tests that run") @@ -121,9 +120,8 @@ set_tests_properties( add_executable(BenchmarkingMacros ${TESTS_DIR}/X20-BenchmarkingMacros.cpp) -StampOutLibrary(BenchmarkingMacros) -target_compile_definitions( Catch2_BenchmarkingMacros PUBLIC CATCH_CONFIG_ENABLE_BENCHMARKING ) -target_link_libraries( BenchmarkingMacros Catch2_BenchmarkingMacros ) +target_compile_definitions( BenchmarkingMacros PUBLIC CATCH_CONFIG_ENABLE_BENCHMARKING ) +target_link_libraries( BenchmarkingMacros Catch2_buildall_interface ) add_test(NAME BenchmarkingMacros COMMAND BenchmarkingMacros -r console -s) set_tests_properties(