首页 > 编程语言 >C++(cmake-build-debug 和 cmake-build-release)

C++(cmake-build-debug 和 cmake-build-release)

时间:2023-12-15 09:15:12浏览次数:41  
标签:可执行文件 cmake 构建 build debug 调试信息 调试

cmake-build-debugcmake-build-release 是两个默认的构建目录名称,通常在使用 CMake 构建项目时生成。以下是它们的主要作用和区别:

1. cmake-build-debug:

这是一个用于调试构建的默认构建目录名称。在这个目录下,CMake 会生成包含调试信息的可执行文件,以方便在调试器中进行调试。主要特点包括:

  • 包含调试信息: 在调试模式下,编译器会生成包含源代码行信息和变量信息的调试信息,以便在调试时进行准确定位。
  • 未进行优化: 通常情况下,调试构建会关闭大部分优化,以保留变量和函数的实际布局,使得调试更容易。这可能导致生成的可执行文件较大,但对于调试目的是很有帮助的。
  • 生成额外的文件: 调试构建可能会生成一些辅助文件,例如调试信息文件(.pdb 文件,在 Windows 系统中)等。

2. cmake-build-release:

这是一个用于发布构建的默认构建目录名称。在这个目录下,CMake 会生成针对性能进行优化的、不包含调试信息的可执行文件。主要特点包括:

  • 进行优化: 发布构建通常会启用各种编译器优化,以提高程序的执行效率。这可能会使得生成的可执行文件更小、更快。
  • 不包含调试信息: 与调试构建不同,发布构建通常不包含源代码行信息和变量信息的调试信息,以减小可执行文件的大小。
  • 适合发布: 发布构建适合部署到生产环境,因为它们通常会生成较小且性能更好的可执行文件。

示例:

# 在项目根目录下创建构建目录
mkdir build
cd build

# 生成调试构建
cmake -DCMAKE_BUILD_TYPE=Debug ..

# 或者生成发布构建
cmake -DCMAKE_BUILD_TYPE=Release ..

在上述例子中,通过在命令行中使用 -DCMAKE_BUILD_TYPE 参数,你可以指定构建的类型,可以选择 DebugRelease。如果不指定,默认是 Debug

总的来说,cmake-build-debugcmake-build-release 目录是为了方便在不同构建配置下分别存放调试和发布版本的可执行文件和相关构建文件。



标签:可执行文件,cmake,构建,build,debug,调试信息,调试
From: https://www.cnblogs.com/keye/p/17902623.html

相关文章

  • 【异常】File encoding has not been set, using platform encoding UTF-8, i.e. buil
    From: https://www.cnblogs.com/duanxianyouyang/p/14679926.htmlFileencodinghasnotbeenset,usingplatformencodingUTF-8,i.e.buildisplatformdependent!Usingplatformencoding(UTF-8actually)tocopyfilteredresources,i.e.buildisplatformdepen......
  • _DEBUG预处理器定义问题
    release状态编译了一个dll,但运行报assert错误,看了下系统库的源码,是在"#ifdefined_DEBUG"条件编译下的代码报出来的,疑惑release为什么还有_DEBUG状态,搜了代码、查看了预处理器定义都是没有的。后询问了大佬,原来如此:  查看微软官方说明,确实:Thecompilerdefines _DEBUG......
  • 云桌面 node_modules 切换艰辛历程记录 rebuild失败记录
    解决nvm切换完需要关闭全部打开的终端或者直接重启更方便遇到的状况:拿到node_modules后更换执行npmrebuild重新构建报错node版本不一致nvm切换版本不成功换个窗口又变回原来版本号了设置默认版本nvmaliasdefault14.16.1发现下面还有一个stable的还指向原来版本......
  • npm 安装是一直卡在idealTree:npm:sill idealTree buildDeps无反应
    最近npminstall下载依赖出现一直卡在idealTree:npm:sillidealTreebuildDeps,最后出现requesttohttps://registry.npmjs.org/simple-zustand-devtoolsfailed,reason:connectETIMEDOUT104.16.3.35:443连接超时?于是ping registry.npmjs.org下这个网站是能够正常连接的,......
  • ubuntu 18.04.6 编译文件系统buildroot的时候提示 buildroot/output/host/ARM-buildro
    错误提示如下:ln::无法创建符号链接buildroot/output/host/ARM-buildroot-linux-gnueabihf/sysroot/usr/lib没有文件或目录  cd进入buildroot路径,先sudomakeclean 然后再cd..到software文件夹重新make就可以了。  ......
  • ubuntu18.04.6 配置Busybox make -C buildroot busybox-menuconfig 遇到提示LD_LIBR
     可以先在终端执行下面命令让LD_LIBRARY_PATH变量的内容变为空白 然后再继续,这时会提示安装g++ 输入sudoapt-getinstallg++又提示权限不够,那就在make命令的前面加上sudo即可: 这样busybox的界面就会出现:  ......
  • 使用CEF(七)详解macOS下基于CEF的多进程应用程序CMake项目搭建
    由于macOS下的应用程序结构导致了CEF这样的多进程架构程序在项目结构、运行架构上有很多细节需要关注,这一块的内容比起Windows要复杂的多,所以本文将会聚焦macOS下基于CEF的多进程应用架构的环境配置,并逐一说明了CMake的相关用法和CEF应用配置细节。前言在进行搭建之前,我们首先必......
  • 笔记:Qt开发之定制化qDebug()函数
    目标:实现qDebug()函数的定制输出,包含文件名、函数名、行数等信息1,通过qSetMessagePattern函数,实现定制化输出intmain(intargc,char**argv){QApplicationapp(argc,argv);//改变缺省消息处理程序的输出,信息:线程:功能函数(行数):时间qSetMessagePattern("%{mes......
  • 推荐一个超爽的前端工具HBuilder
    开发学习网站:http://www.runoob.com 菜鸟教程使用HBuilderUniApp跨平台开源框架开发的H5和有app项目感觉效果还不错以后跨平台是一个趋势哦可以学习一下语法是vue的语法开发还有一些小程序的语法结合起来的 有很多个开源项目,可以下载学习!一套代码可编译到8个平台 我学习后开......
  • qt和cmake安装
    1/qtIndexof/archive/qt  2、cmakeDownloadCMake 安装比较简单 记得选择addpath,这样就不用手动添加环境变量了 3、vscode插件c/c++ cmake cmaketools qtconfigure qttools ......