我認爲一個可能的解決方案強烈依賴於用例。例如。如果這是爲了在系統建立後執行測試,您將使用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