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

Debugging 为调试和发布配置设置cmake目标名称,debugging,configuration,cmake,release,Debugging,Configuration,Cmake,Release,我试图区分调试版本和发布版本 如果正在进行调试构建,我想在/usr/local/lib中安装myLibd。 如果发行版正在进行构建,我想在/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(${L

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

如果正在进行调试构建,我想在/usr/local/lib中安装myLibd。 如果发行版正在进行构建,我想在/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=Debug或Release),目标名称始终是myLibd。这里有什么问题

set_property(TARGET ${LIB_NAME} PROPERTY DBG_POSTFIX d)
参考

解决方案 设置变量:

if(NOT CMAKE_DEBUG_POSTFIX)
  set(CMAKE_DEBUG_POSTFIX d)
endif()
细节 这里有什么问题

set_property(TARGET ${LIB_NAME} PROPERTY DBG_POSTFIX d)
  • 您需要使用
    if(CMAKE\u BUILD\u TYPE MATCHES Release)
    而不是
    if(CMAKE\u BUILD\u TYPE MATCHES Release)
  • 可能您需要清理构建目录
  • 请注意,
    if(CMAKE\u BUILD\u TYPE…)

顺便说一句,当链接调试/发布配置时,这有助于