CMakeLists.txt怎么区分debug 和release
时间: 2024-11-22 20:18:19 浏览: 8
`CMakeLists.txt` 文件是 CMake 的配置文件,它用于描述项目的构建过程。对于区分 debug 和 release 版本,通常会在 `CMakeLists.txt` 中设置构建类型(build type)。通过添加如下片段:
```cmake
# 设置默认构建类型为 Debug 或 Release
if(NOT CMAKE_BUILD_TYPE)
if(CMAKE_VERSION VERSION_LESS 3.10)
set(CMAKE_BUILD_TYPE Debug)
else()
set_default_properties(TARGETS ALL PROPERTY CMAKE_BUILD_TYPE Debug)
endif()
endif()
# 对 Debug 构建设置特定选项
if(${CMAKE_BUILD_TYPE} MATCHES "Debug")
# 添加调试模式的 flags 或 include paths 等
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0" CACHE STRING "Flags used by the C++ compiler during debug builds.")
# 如果有其他debug相关的设置,如添加额外的库、插件等
add_definitions(-DDEBUG)
else()
# 对 Release 或 Release with Debug Info 构建设置优化选项
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "Flags used by the C++ compiler during release builds.")
# 类似地,你可以为 Release 版本指定其他 flags 或配置
add_definitions(-DNDEBUG)
endif()
```
在这个例子中,`CMAKE_BUILD_TYPE` 变量会根据传入的命令行参数或者未指定时自动设置。然后,我们检查这个变量以针对 debug 和 release 分别应用不同的编译选项。`-g` 用于生成调试信息,`-O0` 则表示全速调试;而对于 release 版本,我们会添加 `-DNDEBUG` 宏来关闭调试特性,并启用优化。
阅读全文