【问题标题】:Set cmake target name for debug and release configuration为调试和发布配置设置 cmake 目标名称
【发布时间】:2015-02-14 20:52:04
【问题描述】:

我试图区分调试版本和发布版本。

如果 debug 构建正在进行中,我想在 /usr/local/lib 中安装 myLibd。 如果 release 构建正在进行中,我想将 myLib 安装在 /usr/local/lib 中。

这是我的方法

IF(CMAKE_BUILD_TYPE MATCHES RELEASE)
    SET(LIB_NAME myLib) 
ELSE()
    SET(LIB_NAME myLibd) 
ENDIF(CMAKE_BUILD_TYPE MATCHES RELEASE)

ADD_LIBRARY(${LIB_NAME} ${Source_files} ${Header_files})
INSTALL(TARGETS ${LIB_NAME} DESTINATION /usr/local/lib)

但是,在这两种情况下(CMAKE_BUILD_TYPE=Debug 或 Release),目标名称始终是 myLibd。这里有什么问题?

【问题讨论】:

标签: debugging configuration cmake release


【解决方案1】:

解决方案

设置CMAKE_DEBUG_POSTFIX变量:

if(NOT CMAKE_DEBUG_POSTFIX)
  set(CMAKE_DEBUG_POSTFIX d)
endif()

详情

这里有什么问题?

  • 您需要使用if(CMAKE_BUILD_TYPE MATCHES Release) 而不是if(CMAKE_BUILD_TYPE MATCHES RELEASE)
  • 可能您需要清理构建目录
  • 请注意,if(CMAKE_BUILD_TYPE...) 方法不适用于 multi-configuration 生成器

【讨论】:

  • 顺便说一句,在链接调试/发布配置时,link 有帮助
【解决方案2】:
set_property(TARGET ${LIB_NAME} PROPERTY DBG_POSTFIX d)

参考

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2012-01-10
    • 1970-01-01
    • 2011-01-02
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多