CMake 仅针对特定目标设置 CMAKE_RUNTIME_OUTPUT_DIRECTORY

Den*_*ank 3 cmake

我的整个项目使用

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
Run Code Online (Sandbox Code Playgroud)

将所有运行时二进制文件放置在该bin目录中。

但是我需要将一些 dll 放在名为“scripts”的子目录中,我尝试使用以下代码为特定目标设置变量:

set_target_properties(my_script_dll PROPERTIES
    CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/scripts"
)
Run Code Online (Sandbox Code Playgroud)

但它不起作用,dll仍然放在bin.

有没有办法仅为特定目标设置输出目录?

Den*_*ank 6

我通过使用解决了它:

set_target_properties(my_script_dll PROPERTIES
    RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/bin/Debug/scripts"
    RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/bin/Release/scripts"
    RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/bin/RelWithDebInfo/scripts"
    RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_BINARY_DIR}/bin/MinSizeRel/scripts"
)
Run Code Online (Sandbox Code Playgroud)