project(test_include_dirs) include(CTest) enable_testing() add_executable(dummy dummy.cpp) function(generate_tests NAME) set(ctest_file "${CMAKE_CURRENT_BINARY_DIR}/${NAME}_tests.cmake") add_custom_command( OUTPUT "${ctest_file}" COMMAND "${CMAKE_COMMAND}" -D "TEST_EXECUTABLE=$" -D "TEST_SUITE=${NAME}" -D "TEST_NAMES=${ARGN}" -D "CTEST_FILE=${ctest_file}" -P "${CMAKE_CURRENT_SOURCE_DIR}/add-tests.cmake" VERBATIM ) add_custom_target(${NAME}_tests ALL DEPENDS "${ctest_file}") endfunction() generate_tests(house dog cat) generate_tests(farm cow pig) generate_tests(zoo fox emu) set_property(DIRECTORY PROPERTY TEST_INCLUDE_FILE "house_tests.cmake") set_property(DIRECTORY APPEND PROPERTY TEST_INCLUDE_FILES "farm_tests.cmake") set_property(DIRECTORY APPEND PROPERTY TEST_INCLUDE_FILES "zoo_tests.cmake")