如何使CLion使用不同的CMake配置进行调试和发布?

时间:2019-07-13 15:14:01

标签: cmake clion

我构建了2个单独的OpenCV调试和发行版本。调试项目时如何在2个版本之间切换?我尝试过:

IF(CMAKE_BUILD_TYPE MATCHES DEBUG)
    message(WARNING "debug mode")
    find_package(OpenCV REQUIRED
            PATHS /path/to/debug/build NO_DEFAULT_PATH)
ELSE()
    message(WARNING "release mode")
    find_package(OpenCV REQUIRED)
ENDIF()

但是它不起作用。当我正常构建时,它的确显示release mode,但是当调试器启动时,它却不显示debug moderelease mode。我的想法是将CMAKE_BUILD_TYPE设置为{{ 1}}调试时。是真的吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

MATCHES中的

if区分大小写。因此,在比较CMAKE_BUILD_TYPE时,您必须确定大小写。流行的是将字符串转换为大写并进行比较:

string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UP)
if (${CMAKE_BUILD_TYPE_UP} STREQUAL "DEBUG")
   ...

或者最好是与cmake docsPossible values are empty, Debug, Release, RelWithDebInfo and MinSizeRel中定义的标准值进行比较。请注意,cmake -DCMAKE_BUILD_TYPE=dEbUgcmake -DCMAKE_BUILD_TYPE=DeBuG都将针对Debug构建进行配置,但是CMAKE_BUILD_TYPE变量将有所不同。因此,最安全的方法是将其转换为大写。