CMP0113¶
在版本 3.19 中新增。
Makefile 產生器 不會重複來自目標依賴項的自訂命令。
考慮一個跨兩個相依目標分割的自訂命令鏈
add_custom_command(OUTPUT output-not-created
COMMAND ... DEPENDS ...)
set_property(SOURCE output-not-created PROPERTY SYMBOLIC 1)
add_custom_command(OUTPUT output-created
COMMAND ... DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/output-not-created)
add_custom_target(first DEPENDS output-not-created)
add_custom_target(second DEPENDS output-created)
add_dependencies(second first)
在 CMake 3.18 及更低版本中,即使目標 second
對目標 first
的依賴性確保了第一個自訂命令在第二個之前執行,Makefile 產生器仍會將兩個自訂命令的副本放在目標 second
的 Makefile 中。執行 make second
將導致第一個自訂命令在 first
目標中執行一次,然後在 second
目標中再次執行。
CMake 3.19 及以上版本傾向於不重複目標中已經在目標所依賴的其他目標(直接或間接)中產生的自訂命令。此策略為尚未更新以預期新行為的專案提供相容性。特別是,依賴重複執行或未正確設定 SYMBOLIC
原始檔屬性的專案可能會受到影響。
此策略的 OLD
行為是在相依目標中重複自訂命令。此策略的 NEW
行為是不在相依目標中重複自訂命令。
此策略在 CMake 版本 3.19 中引入。它可以由 cmake_policy()
或 cmake_minimum_required()
設定。如果未設定,CMake 不會 警告,並使用 OLD
行為。
注意
策略的 OLD
行為依 定義已棄用
,並可能在未來的 CMake 版本中移除。