11include (FetchContent)
22include (GoogleTest)
33
4- FetchContent_Declare(
5- googletest
6- URL https://github.com/google/googletest/archive/refs/tags/v1.15.2.zip)
4+ FetchContent_Declare(googletest
5+ URL https://github.com/google/googletest/archive/refs/tags/v1.15.2.zip)
76
87set (gtest_force_shared_crt
98 ON
@@ -21,8 +20,8 @@ foreach(test IN LISTS tests)
2120 gtest_discover_tests(${test} )
2221endforeach ()
2322
24- # Add the deployment test, which checks that we can indeed install traits and
25- # then use `find_package` to depend on it from another CMake project.
23+ # Add the deployment test, which checks that we can indeed install traits and then use
24+ # `find_package` to depend on it from another CMake project.
2625include (ExternalProject)
2726set (FAKE_INSTALL_DIR "${PROJECT_BINARY_DIR} /fakeroot" )
2827ExternalProject_Add(
@@ -31,47 +30,53 @@ ExternalProject_Add(
3130 EXCLUDE_FROM_ALL TRUE
3231 BUILD_ALWAYS TRUE
3332 INSTALL_DIR "${FAKE_INSTALL_DIR} "
34- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
35- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
36- -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
37- -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
33+ CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
34+ -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
3835 TEST_COMMAND "" # Disable test step
3936 UPDATE_COMMAND "" # Disable source work-tree update
4037)
4138
4239add_custom_target (
4340 test .deploy
4441 DEPENDS test .deploy.fakeroot
45- COMMAND ${CMAKE_COMMAND} -E remove_directory
46- "${CMAKE_CURRENT_BINARY_DIR} /deploy"
47- COMMAND ${CMAKE_COMMAND} -E make_directory
48- "${CMAKE_CURRENT_BINARY_DIR} /deploy"
42+ COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_CURRENT_BINARY_DIR} /deploy"
43+ COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR} /deploy"
4944 COMMAND
50- ${CMAKE_COMMAND} -E chdir "${CMAKE_CURRENT_BINARY_DIR} /deploy"
51- ${CMAKE_COMMAND} "${CMAKE_CURRENT_SOURCE_DIR} /deploy"
52- -DCMAKE_CXX_COMPILER="${CMAKE_CXX_COMPILER} "
45+ ${CMAKE_COMMAND} -E chdir "${CMAKE_CURRENT_BINARY_DIR} /deploy" ${CMAKE_COMMAND}
46+ "${CMAKE_CURRENT_SOURCE_DIR} /deploy" -DCMAKE_CXX_COMPILER="${CMAKE_CXX_COMPILER} "
5347 -DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH} \; ${FAKE_INSTALL_DIR} "
5448 -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
5549 COMMAND ${CMAKE_COMMAND} --build "${CMAKE_CURRENT_BINARY_DIR} /deploy" )
56- add_test (NAME test .deploy COMMAND ${CMAKE_COMMAND} --build
57- " ${PROJECT_BINARY_DIR} " -- target test .deploy)
50+ add_test (NAME test .deploy COMMAND ${CMAKE_COMMAND} --build " ${PROJECT_BINARY_DIR} " -- target
51+ test .deploy)
5852
59- # Add the fetch test, which checks that we can indeed use fetch content from
60- # another CMake project.
53+ # Add the fetch test, which checks that we can indeed use fetch content from another CMake project.
6154
6255add_custom_target (
6356 test .fetch
6457 DEPENDS package
65- COMMAND ${CMAKE_COMMAND} -E remove_directory
66- "${CMAKE_CURRENT_BINARY_DIR} /fetch"
58+ COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_CURRENT_BINARY_DIR} /fetch"
6759 COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR} /fetch"
6860 COMMAND
69- ${CMAKE_COMMAND} -S "${CMAKE_CURRENT_SOURCE_DIR} /fetch" -B
70- "${CMAKE_CURRENT_BINARY_DIR} /fetch"
61+ ${CMAKE_COMMAND} -S "${CMAKE_CURRENT_SOURCE_DIR} /fetch" -B "${CMAKE_CURRENT_BINARY_DIR} /fetch"
7162 -DPACKAGE_PATH="${CMAKE_CURRENT_BINARY_DIR} /../${TRAITS_PACKAGE_NAME} "
72- -DCMAKE_CXX_COMPILER="${CMAKE_CXX_COMPILER} "
73- -DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH} "
63+ -DCMAKE_CXX_COMPILER="${CMAKE_CXX_COMPILER} " -DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH} "
7464 -DCMAKE_TOOLCHAIN_FILE="${CMAKE_TOOLCHAIN_FILE} "
7565 COMMAND ${CMAKE_COMMAND} --build "${CMAKE_CURRENT_BINARY_DIR} /fetch" )
76- add_test (NAME test .fetch COMMAND ${CMAKE_COMMAND} --build
77- "${PROJECT_BINARY_DIR} " --target test .fetch)
66+ add_test (NAME test .fetch COMMAND ${CMAKE_COMMAND} --build "${PROJECT_BINARY_DIR} " --target
67+ test .fetch)
68+
69+ if (TRAITS_TEST_COVERAGE)
70+ find_program (LCOV lcov REQUIRED)
71+ find_program (GENHTML genhtml REQUIRED)
72+
73+ set (CMAKE_CXX_FLAGS "-O0 -coverage" )
74+
75+ add_custom_target (
76+ coverage
77+ COMMAND "${LCOV} " --capture --directory . --output -file coverage.info
78+ COMMAND "${LCOV} " --remove coverage.info '/usr/*' '*/gtest/*' --output -file coverage.info
79+ COMMAND "${LCOV} " --list coverage.info
80+ COMMAND "${GENHTML} " --demangle-cpp -o coverage coverage.info
81+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR} " )
82+ endif ()
0 commit comments