【发布时间】:2015-08-04 19:08:11
【问题描述】:
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)。
上面的示例有效,但它在other_target 上创建了copy_target 的不必要依赖。我更喜欢${CMAKE_RUNTIME_OUTPUT_DIRECTORY_$<CONFIG>} 之类的东西,但这不被接受(出乎意料的<)。此外,该解决方案也应该适用于单一配置生成器,${CMAKE_RUNTIME_OUTPUT_DIRECTORY_$<CONFIG>} 可能不会。
$<TARGET_FILE_DIR:copy_target> 也不起作用,因为copy_target 是一个虚拟对象,而不是二进制文件。
【问题讨论】:
标签: cmake cross-platform