我认为一个可能的解决方案强烈依赖于用例。例如。如果这是为了在系统建立后执行测试,您将使用CTest
而不是直接调用make
。
要你的CMakeLists.txt你可以这样:
add_test(NAME foo COMMAND ...)
然后用CTest
建设和执行:
ctest --build-and-test ...
更广泛地说,不考虑你为什么会喜欢这个问题做到这一点 - 我认为最好的办法就是命名并依赖具体的目标依赖关系,而不是仅仅采取ALL
目标 - 我只是想增加两种可能性来做你想做的事情。
一个将确定/跟踪所讨论的所有目标列表here。这看起来像例如图书馆的目标是这样的(让你自己/私人GlobalTargetList
):
macro(add_library _target)
_add_library(${_target} ${ARGN})
set_property(GLOBAL APPEND PROPERTY GlobalTargetList ${_target})
endmacro()
,并在你的主要的CMakeLists.txt结束与
get_property(_allTargets GLOBAL PROPERTY GlobalTargetList)
add_dependencies(foo ${_allTargets})
编辑使用它:全球BUILDSYSTEM_TARGETS
财产被释放与CMake 3.7
第二个不太有利的方法确实需要foo
目标不是ALL
构建的一部分(否则你在无尽的循环中结束):
add_custom_target(foo)
set_target_properties(foo PROPERTIES EXCLUDE_FROM_ALL 1)
add_custom_command(
TARGET foo
PRE_BUILD
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target ALL_BUILD --config $<CONFIGURATION>
)
“使用ALL选项”:这将我的目标添加到ALL。我想将ALL作为依赖项添加到我的目标中。这是无法完成的。 2009年有一个bugreport /功能要求:http://public.kitware.com/Bug/view.php?id=8438 – gnzlbg
将你的问题改为“我希望默认目标依赖它”。 – sakra
我的问题的第一句话里有什么不清楚的地方:“我有一个自定义目标,我希望它依赖于默认目标”? – gnzlbg