在CMake中基于Release/Debug构建类型创建目录

the*_*tar 2 cmake visual-studio-2012

我正在进行post build,INSTALL命令.在构建项目之后,我构建了INSTALL项目,该项目将目录复制到用户指定的位置.我的工作正常

安装(TARGETS EXECTUABLE RUNTIME DESTINATION CMAKE_INSTALL_PREFIX/USERSPECIFIEDLOCATION).

我想将其更改为
安装(TARGETS EXECTUABLE RUNTIME DESTINATION CMAKE_INSTALL_PREFIX/DEBUG或RELEASE).

因此,如果我在VS2012中使用debug构建,它应该将可执行文件复制到CMAKE_INSTALL_PREFIX/DEBUG而不是CMAKE_INSTALL_PREFIX/USERSPECIFIEDLOCATION.

提前致谢.

小智 5

如果您仔细查看文档,您会找到问题的答案:

The CONFIGURATIONS argument specifies a list of build configurations
for which the install rule applies (Debug, Release, etc.).
Run Code Online (Sandbox Code Playgroud)

例:

add_executable(boo boo.cpp)

install(
    TARGETS
    boo
    CONFIGURATIONS
    Debug
    DESTINATION
    bin/Debug
)

install(
    TARGETS
    boo
    CONFIGURATIONS
    Release
    DESTINATION
    bin/Release
)
Run Code Online (Sandbox Code Playgroud)

DEBUG_POSTFIX

但我认为你需要的只是CONFIG _POSTFIX目标属性:

add_executable(bar bar.cpp)
add_library(baz baz.cpp)

set_target_properties(bar baz PROPERTIES DEBUG_POSTFIX d)

install(TARGETS bar DESTINATION bin)
install(TARGETS baz DESTINATION lib)
Run Code Online (Sandbox Code Playgroud)

建设install目标与Release配置产生:bar.exebaz.lib.建设install目标与Debug配置产生:bard.exebazd.lib.

注意

请注意,对于库,您可以使用CMAKE_DEBUG_POSTFIX(我不知道原因,但CMAKE_DEBUG_POSTFIX不适用于可执行文件):

set(CMAKE_DEBUG_POSTFIX d)

add_library(baz baz.cpp)
install(TARGETS baz DESTINATION lib)
Run Code Online (Sandbox Code Playgroud)

有关

target_link_libraries.见debugoptimized.