为调试和发布配置设置cmake目标名称

时间:2014-12-16 14:02:31

标签: debugging configuration cmake release

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

如果正在进行调试构建,我想在/ usr / local / lib中安装myLib d 。 如果正在进行发布构建,我想在/ usr / local / lib中安装myLib。

这是我的方法

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 =调试或发布)总是myLib d 。这有什么问题?

2 个答案:

答案 0 :(得分:7)

解决方案

设置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生成器

答案 1 :(得分:1)

set_property(TARGET ${LIB_NAME} PROPERTY DBG_POSTFIX d)

<强>参考