在我的项目中,我有大量的测试可执行文件,我只想在需要时构建它们,即“make tests”应该在没有args的“make”中创建它们。
在我的顶级CMakeLists.txt中,我有
add_custom_target(tests)
在我的子目录CMakeLists.txt中,我有
set (TEST_APP_LIST foo bar)
foreach (TEST_APP ${TEST_APP_LIST})
add_executable(${TEST_APP} EXCLUDE_FROM_ALL ${TEST_APP}.cpp)
target_link_libraries(${TEST_APP} ${MY_LIBS})
add_dependencies(tests ${TEST_APP})
endforeach(TEST_APP)
这是踢球者:当我进行源外构建时,这很好用,但是如果我进行源内构建,即使我没有指定它,也会构建测试目标。我想在两种情况下明确要求测试目标。
很有可能说“好吧,只是不要做源内构建,因为它们是邪恶的”这是公平的,但目前,我需要支持这两种方法一段时间。
这是使用cmake 2.6版。