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

时间:2013-12-24 22:37:01

标签: visual-studio-2012 cmake

我正在开发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

提前致谢。

1 个答案:

答案 0 :(得分:5)

如果您仔细观察documentation

,您会找到问题的答案
The CONFIGURATIONS argument specifies a list of build configurations
for which the install rule applies (Debug, Release, etc.).

示例:

add_executable(boo boo.cpp)

install(
    TARGETS
    boo
    CONFIGURATIONS
    Debug
    DESTINATION
    bin/Debug
)

install(
    TARGETS
    boo
    CONFIGURATIONS
    Release
    DESTINATION
    bin/Release
)

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)

使用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)

相关

target_link_libraries。请参阅debugoptimized