visual-studio-2012 - 在 CMake 中根据 Release/Debug 构建类型创建一个目录

标签 visual-studio-2012 cmake

我正在处理后期构建、INSTALL 命令。构建项目后,我构建 INSTALL 项目,它将目录复制到用户指定的位置。我可以正常使用

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

我想把它改成
安装(TARGETS EXECTUABLE RUNTIME DESTINATION CMAKE_INSTALL_PREFIX/DEBUG or RELEASE)。

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

提前致谢。

最佳答案

如果您仔细查看 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)

使用 Release 配置生成 install 目标生成:bar.exebaz.lib。 使用Debug 配置生成install 目标: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 .请参阅调试优化

关于visual-studio-2012 - 在 CMake 中根据 Release/Debug 构建类型创建一个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20767436/

相关文章:

c++ - 如何修复 'Vcpkg/CMake Is Unable to determine target architecture'(Windows10、vcpkg、clion、cmake)

visual-studio - 如何使用 Conan for CMake 指定 Visual Studio 编译器工具集?

c++ - 通过使用特定于平台的项目文件或使用项目生成器来构建自动化?

javascript - 旧版本的 Visual Studio 扩展

在 Visual Studio 2012 Express 中将 C 代码编译为 .bin 文件

visual-studio-2012 - 奇怪的名字混淆

compilation - 如何控制cmake的子目录编译顺序?

c++ - 为 C++ 编写不递增的味觉测试程序

c# - Visual Studio 2012 项目模板自定义参数和重命名问题

visual-studio - 从 cmake 引用 Visual Studio 变量