我构建了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 mode
或release mode
。我的想法是将CMAKE_BUILD_TYPE
设置为{{ 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 docs:Possible values are empty, Debug, Release, RelWithDebInfo and MinSizeRel
中定义的标准值进行比较。请注意,cmake -DCMAKE_BUILD_TYPE=dEbUg
和cmake -DCMAKE_BUILD_TYPE=DeBuG
都将针对Debug构建进行配置,但是CMAKE_BUILD_TYPE
变量将有所不同。因此,最安全的方法是将其转换为大写。