我有一个带有下一个 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"
)
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
它只会复制文件(如果文件不同),并且如果目标已经构建,它仍然会复制。但请注意,如果您仅要求构建目标本身,则它不会复制。以上依赖于您构建默认目标来复制文件。您始终可以将问题中的方法与上述方法结合起来,对于您想要的情况来说,它可能会很有效。
| 归档时间: |
|
| 查看次数: |
2499 次 |
| 最近记录: |