是否有 CMAKE_RUNTIME_OUTPUT_DIRECTORY
的生成器表达式?
我想将一个目录复制到运行时输出目录,我目前这样做:
add_custom_target(copy_target ALL)
add_custom_command(TARGET copy_target POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_CURRENT_SOURCE_DIR}/foo
$<TARGET_FILE_DIR:other_target>/foo)
只需复制到 CMAKE_RUNTIME_OUTPUT_DIRECTORY
不适用于为每个配置创建子目录的多配置生成器(Visual Studio、XCode)。
上面的示例有效,但它创建了不必要的依赖项 copy_target
上other_target
。我更喜欢类似 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_$<CONFIG>}
的东西但这没有被接受(意外 <
)。此外,该解决方案还应该适用于单配置生成器,${CMAKE_RUNTIME_OUTPUT_DIRECTORY_$<CONFIG>}
可能不会。
还有$<TARGET_FILE_DIR:copy_target>
不起作用,因为 copy_target
是一个虚拟的,不是二进制的。
最佳答案
变量 CMAKE_CFG_INTDIR可能会有所帮助,例如:
add_custom_command(TARGET copy_target POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_CURRENT_SOURCE_DIR}/foo
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}/foo)
关于运行时输出目录的 cmake 生成器表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31817291/