CMake基础教程cmake生成debug和release两个版本程序(如何编译-g版本)

Posted 奇妙之二进制

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CMake基础教程cmake生成debug和release两个版本程序(如何编译-g版本)相关的知识,希望对你有一定的参考价值。

本文是历史经验总结,对你绝对有很大的帮助。这是cmake的一个神坑。

可以通过设置变量CMAKE_BUILD_TYPE生成 debug 版和 release 版的程序。

该变量可以的取值是 Debug Release RelWithDebInfo 和 MinSizeRel。当这个变量值为 Debug 的时候,CMake 会使用变量CMAKE_CXX_FLAGS_DEBUGCMAKE_C_FLAGS_DEBUG 中的字符串作为编译选项生成 Makefile,当这个变量值为 Release 的时候,工程会使用变量CMAKE_CXX_FLAGS_RELEASECMAKE_C_FLAGS_RELEASE 选项生成 Makefile。

所谓的生成debug和release两个版本的程序,只是决定了CMake会取哪个变量作为编译选项,如果我们没有给这些变量赋值,那么即使设置了Debug版本,编译出来也没啥区别。

现假设项目中只有一个文件 main.cpp ,下面是一个可以选择生成 debug 版和 release 版的程序的 CMakeLists.txt :

PROJECT(main)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
SET(CMAKE_SOURCE_DIR .)

SET(CMAKE_CXX_FLAGS_DEBUG "$ENVCXXFLAGS -O0 -Wall -g -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENVCXXFLAGS -O3 -Wall")

AUX_SOURCE_DIRECTORY(. DIR_SRCS)
ADD_EXECUTABLE(main $DIR_SRCS)

第 5 和 6 行设置了两个变量

以上是关于CMake基础教程cmake生成debug和release两个版本程序(如何编译-g版本)的主要内容,如果未能解决你的问题,请参考以下文章

CMake基础教程(30)CMake构建系统概览

cmake基础教程(40)生成器表达式

cmake基础教程(40)生成器表达式

CMake基础教程(28)自动生成目标依赖图

CMake基础教程(36)Linux交叉编译

CMake基础教程(20)认识cmake命令