【问题标题】:How to refer to Visual Studio output directory in CMakeLists.txt?如何引用 CMakeLists.txt 中的 Visual Studio 输出目录?
【发布时间】:2015-05-13 07:38:18
【问题描述】:

我有一个使用 CMake 的跨平台项目。我正在做源外构建,所以基本上我有一个包含 CMakeLists.txt 的源目录“src”,然后我有一个“src/build”目录,用于生成源外构建。

但是,当使用 Visual Studio (2013) 时,它不会将可执行文件放在构建目录中,而是将其放在“src/build/Debug”中(取决于所选配置)。我认为这在 VS 中被称为“$(OutDir)”。如何引用 CMakeLists.txt 中的(运行时)输出目录,以便将 DLL 和着色器复制到可执行文件所在的位置?

编辑:建议的重复答案对我来说似乎不正确。在那个答案中,你只是强制输出目录是静态的,如果你使用像 Visual Studio 这样的多配置构建系统,这听起来是错误的。

【问题讨论】:

标签: visual-studio-2013 cmake


【解决方案1】:

我通过使用支持 StAlphonzo 建议的 cmake-generator-expressions 的“文件(生成输出)”复制文件解决了我的问题:

foreach (file ${SHADER_SOURCES})
    file (GENERATE OUTPUT $<CONFIG>/${file} INPUT ${PROJECT_SOURCE_DIR}/${file})
endforeach()

我还想提一下解决这个问题的第二种方法,我发现我认为实际上更正确,方法是添加自定义命令:

add_custom_command(TARGET target ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCES_DIR}/foo $<TARGET_FILE_DIR:target>)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 2014-01-27
    • 2021-05-30
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多