cmake 如何编译成debug版?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmake 如何编译成debug版?相关的知识,希望对你有一定的参考价值。
在学习cmake。编译成功了。但是生成的程序不能gdb,不是debug的。我想知道是不是cmake的时候需要加参数,还是CMakeLists需要修改什么才能使程序变成debug版的
回复 7# qfmeal 这些参数是make工具的,--debug 只会让make在调用编译器gcc/g++干活的时候打印更多的东西,让你看到它详细的分析和处理指令的过程。 参考技术A 谢谢 可以了。就是这个变量。SET( CMAKE_BUILD_TYPE Debug ) 参考技术B ……好像没有。Makefile里面也没有CMake基础教程cmake生成debug和release两个版本程序(如何编译-g版本)
本文是历史经验总结,对你绝对有很大的帮助。这是cmake的一个神坑。
可以通过设置变量CMAKE_BUILD_TYPE
生成 debug 版和 release 版的程序。
该变量可以的取值是 Debug Release RelWithDebInfo 和 MinSizeRel。当这个变量值为 Debug 的时候,CMake 会使用变量CMAKE_CXX_FLAGS_DEBUG
和 CMAKE_C_FLAGS_DEBUG
中的字符串作为编译选项生成 Makefile,当这个变量值为 Release 的时候,工程会使用变量CMAKE_CXX_FLAGS_RELEASE
和 CMAKE_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 如何编译成debug版?的主要内容,如果未能解决你的问题,请参考以下文章