![](/img/trans.png)
[英]Why CMake custom target won't be built even if dependency was changed
[英]CMake custom command - copy changed file even if don't build target and only if it was changed?
我有一個帶有下一個post_build命令的CMake項目:
add_custom_command(TARGET ncd_json
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/ncd.json
$<TARGET_FILE_DIR:ncd_json>/ncd.json
COMMENT "Copy ncd.json into binaries folder"
)
每次目標構建時都會復制ncd.json
。 但是, 即使更改了目標 , 即使目標已經構建 ,我也確實需要復制此文件,這是主要問題。
我認為, 如果原始文件發生更改,則此問題不是CMake副本的完整副本,而是對其進行了補充。
類似於以下內容的內容應該可以滿足您的需求:
add_custom_target(copyJson ALL
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${CMAKE_CURRENT_SOURCE_DIR}/ncd.json
$<TARGET_FILE_DIR:ncd_json>/ncd.json
)
add_dependencies(copyJson ncd_json)
如果文件不相同,它將僅復制文件;如果目標已經構建,則仍將復制文件。 但是請注意,如果僅要求構建目標本身, 它將不會復制。 以上內容取決於您構建默認目標來獲取文件復制的情況。 您可以始終將問題中的方法與上述方法結合使用,對於您想要的情況,它可能會很可靠。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.