为Debug和Release配置设置CMake目标名称

9

我正在尝试区分调试版本和发布版本。

如果正在进行调试版本,则希望将myLibd安装在/usr/local/lib中。 如果正在进行发布版本,则希望将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。这里的问题是什么?

2个回答

12

解决方法

设置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...)方法将无效

顺便说一句,当链接调试/发布配置时,这个链接可以帮助:https://dev59.com/0nE95IYBdhLWcg3wrPwn - ZFY

2

它被称为DEBUG_POSTFIX,因为变量定义中的<CONFIG>名称为Debug,为了变量命名目的而大写。 - Meteorhead

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接