【问题标题】:Create a directory based on Release/Debug build type in CMake在 CMake 中根据 Release/Debug 构建类型创建目录
【发布时间】:2013-12-25 22:02:46
【问题描述】:

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

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

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

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

提前致谢。

【问题讨论】:

  • 你的答案真的很难理解。尝试重新制定更精确的公式。请使用markdown将代码封装在适当的标签中,并放入真实的代码。例如,cmake 变量使用 SET(MYVAR val1 val2...) 声明,但使用 ${MYVAR}。请使用正确的语法来帮助我们理解您的要求。
  • 我的问题是......如何创建一个名为“Debug”或“Release”的目录?
  • 下面提供的答案对我有帮助。谢谢。

标签: visual-studio-2012 cmake


【解决方案1】:

如果您靠近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。请参阅debugoptimized

【讨论】:

  • 感谢您的回答。我还有一个问题。我正在搜索 Qt dll,如果使用发布配置,安装应该找到 QtGui4.dll,如果使用调试配置,它应该找到 QtGui4d.dll。我该怎么做?
  • 我的程序发现 dll 很好,但我说的是基于配置而不是链接复制 dll
  • 你能试着回答这个问题吗? stackoverflow.com/questions/20792802/…
猜你喜欢
  • 1970-01-01
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
  • 2013-03-24
  • 1970-01-01
  • 2011-04-11
  • 1970-01-01
相关资源
最近更新 更多