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 及更早版本中,Makefile 產生器會將兩個自訂命令的副本都放在目標 second
的 Makefile 中,即使它對目標 first
的依賴性確保第一個自訂命令在第二個之前執行。執行 make second
將會導致第一個自訂命令在 first
目標中執行一次,然後在 second
目標中再次執行。
CMake 3.19 及更高版本傾向於不重複在目標本身所依賴(直接或間接)的其他目標中已產生的自訂命令。此政策為尚未更新以預期新行為的專案提供相容性。特別是,依賴重複執行或未正確設定 SYMBOLIC
原始檔屬性的專案可能會受到影響。
此政策的 OLD
行為是在相依目標中重複自訂命令。此政策的 NEW
行為是不在相依目標中重複自訂命令。
此政策在 CMake 3.19 版本中引入。可以使用 cmake_policy()
或 cmake_minimum_required()
來設定。如果未設定,CMake 不會發出警告,並使用 OLD
行為。
注意
政策的 OLD
行為 依定義被棄用
,並可能在未來版本的 CMake 中移除。