基于cmake与vscode对多文件c++项目进行编译与调试

【CMake】利用CMake生成同一解决方案下多个项目管理文件 如果通过VS将项目一个一个添加,这项工作将变得十分繁琐。举例来讲,拿服务端和客户端的SOCKET通信来说,服务端和客户端两部分代码应作为两个单独的项目进行编译,而为了在同一解决方案下对这两个(或多个)项目进行管理,此时便可以借助CMake来帮助我们高效完成这项任务。如上图所示,在ServerAndClient这个项目文件夹中包含了Client和Server两个文件夹,里面存放了欲要生成项目的头文件和cpp,在这两个项目文件夹中,我们需要编写CMakeLists文件。有的时候,我们需要在。 阅读详情

1 cmake与g++编译器安装

1.1 软件安装

安装部分可以参考其它的文章,安装后在对应位置得到如下的文件:

1.2 环境变量配置

win+Q打开搜索栏,点击“编辑系统环境变量”,点击“环境变量”,点击系统变量中的“path”,将g++与cmake的程序路径添加进环境变量中,这一步的目的是使我们可以在系统的任何位置直接调用程序。

1.3 安装检查

win+R打开cmd,依次输入以下命令:“g++”,“cmake”,可以得到相应的输出:

有以上输出说明成功安装

2 vscode插件安装

打开vscode,安装以下插件:

3 基于cmake对多文件项目进行编译

3.1 新建项目

打开一个新项目,项目中含有主函数,库函数与头文件,分布在三个文件夹中:

3.2 编写CMakeLists.txt文件

在根目录即TEST目录中新建一个名为“CMakeLists.txt”的文件(一个字母都不能错),填入以下内容:

project(MYADD)
// MYADD为项目名称,可以自取

aux_source_directory(src SRC)
//函数包含两个参数,前者为路径,后者为自取的变量名,该函数将路径内的源文件(如.cpp)读取为列表,存入变量中
aux_source_directory(lib LIB)
//同上,lib为路径,LIB为变量名

add_executable(myadd ${LIB} ${SRC})
//函数包含三个参数,第一个myadd为输出可执行文件的名称,后面为前面读取的两个源文件的列表,该函数将所选的所有源文件编译为可执行文件

include_directories(include)
//函数有一个参数,为头文件的路径

3.3 在vscode中配置cmake

在vscode中按shift+ctrl+p,搜索CMake:Configure,选择GCC编译器

成功后会在输出栏看到信息,以及生成了含有一些文件的build文件夹。

3.4 编译文件

打开终端,进入build文件夹,运行编译工具mingw32-make.exe(可能是mingw64-make.exe,具体需要去安装g++位置的bin文件夹下找)。

编译成功。

4 基于cmake对多文件项目进行调试

4.1 生成launch.json以及tasks.json文件

选中项目的主文件(main.cpp),按shift+ctrl+p,搜索Add Debug Configuration,选择编译器,即可生成两个文件,在.vscode文件夹下。

4.2 修改launch.json以及tasks.json文件

将两个文件替换为如下内容

//tasks.json

{
    "version": "2.0.0",
    "options":{
        "cwd": "${workspaceFolder}/build/"
        //进入build目录
    },

    "tasks":[
        {
            "label": "cmake",
            "type": "shell",
            "command": "cmake",
            "args": [
                ".."
            ]
        },// "cmake"为任务1名称,进行第一步编译
        {
            "label": "make",
            "group":{
                "kind": "build",
                "isDefault": true
            },
            "command": "mingw32-make.exe",
            "args": [
            ]
        },// "make"为任务2名称,进行第二步编译
        {
            "label": "build my project",
            "dependsOn":[
                "cmake",
                "make"
            ]
        }//"build my project"为总任务名称,统筹任务1任务2
    ]
}
//launch.json

{
    "configurations": [
        {
            "name": "C/C++: g++.exe build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/myadd.exe",
                //工作目录的build文件夹,存放编译好的可执行文件
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\mingw\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "Set Disassembly Flavor to Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build my project"
            //预先工作的标签为"build my project",同tasks.json文件,指先完成tasks.json中的工作,再完成本文件的工作。
        }
    ],
    "version": "2.0.0"
}

4.3 调试

选中main.cpp,按F5,即可正常开始调试。

cmake 构建Qt存在多个子项目的应用 如何用CMake来构建跨平台的Qt应用,并且项目包含做个子项目 阅读详情

相关推荐

CMake:嵌套的CMake与多级项目管理(八)

如果项目很大或者项目中有很多的源码目录,在通过CMake管理项目的时候如果只使用一个。,那么这个文件会相对比较复杂,有一种化繁为简的方式就是给每个源代码目录都添加一个。Linux中的目录是一个梳妆结构,所以嵌套的CMake也是一个梳妆结构,最顶层的。文件(头文件不需要),这样每个文件都不会太复杂,而且更灵活,更容易维护。接下来可以依次分析一下各个文件中需要添加的内容。calc目录下的源代码打包生成一个。sort目录下的源代码打包生成一个。文件,并且存放到指定的目录下。文件,并且存放到指定的目录下。

weixin_43808717的博客 2876

002 - CMake 管理多项目

CMake 管理多项目 项目结构 . ├── CMakeLists.txt └── src ├── CMakeLists.txt ├── math │   ├── CMakeLists.txt │   ├── math.cpp │   └── math.h ├── print │   ├── CMakeLists.txt │   ├── prin

EricTeo 4536

Win11下基于VSCode与CMake对多文件C/C++项目进行编译+运行+调试【保姆级教程】

本篇介绍一下如何在 Windows11 的 VSCode 开发环境下利用 CMake 工具进行 C/C++ 多文件项目的编译、调试、运行…【绝对保姆级】

2301_80548189的博客 2053

cmake编译多个工程,一个执行工程调用dll工程。跨平台 win和Linux。 __declspec __attribute__ 函数导出导入动态库声明

cmake编译多个工程,一个工程专门生成 dll ,另一个工程调用dll。

weixin_44654161的博客 2500

VSCode玩转MSVC:从HelloWorld到多文件项目的完整调试指南

本文详细介绍了如何在Windows平台上使用VSCode与MSVC工具链搭建高效的C++开发环境。从基础配置到多文件项目管理,再到调试技巧与性能优化,提供了一套完整的解决方案,帮助开发者提升工作效率并解决常见问题。

weixin_29009971的博客 418

VSCode+CMake配置指南:搞定C/C++多文件项目构建与调试

在C/C++项目从单文件走向多文件结构时,手动维护g++编译命令会迅速变得低效且易错,而构建系统生成器如CMake则能帮助开发者统一管理源文件、头文件路径与编译选项。作为一款轻量级编辑器,VSCode集成CMake Tools、C/C++扩展和GDB调试器后,可构建从编辑、编译到调试的完整工作流。这套方案尤其适合需要频繁切换平台、或希望摆脱IDE束缚的工程实践场景。通过配置CMakeLists.txt、tasks.json与launch.json,开发者能实现一键构建、断点命中和变量查看,让多文件项目开发变

weixin_26804345的博客 277

使用VScode进行C/C++多文件进行编译,调试,运行小结(CMake版)

VScode多文件进行编译,调试,运行vscode的配置安装VScode下新建main.cpp和swap.cpp文件VScode使用CMake进行编译调试 vscode的配置安装 VScode的配置要求如下: 其中C/C++为编译环境配置文件,Chinese为中文汉化包,CMake和CMake Tools为多文件编译操作所必须的插件。 VScode下新建main.cpp和swap.cpp文件 main.cpp: #include<iostream> #include"swap.h" usin

六竹书生_DH的博客 1409

cmake创建多工程例子

cmake创建多工程例子的简单例子

关于ubuntu下vscode+C/C++多项目文件的编译与调试

最近要使用ubuntu系统做开发,习惯了windows下的vs,在ubuntu下暂时没有找到好的IDE可以使用,后面发现微软有推出vscode的轻量化编辑器,故研究了一段时间。在网上学习后发现针对多文件的调试很不方便,大部分都是使用task.json和launch.json,这块我很不熟悉,有点一筹莫展,经同事指点发现了简单的调试过程。 1.先看下示例文件: b.h #ifndef B_FILE_HEADER_INC #define B_FIEL_HEADER_INC #include<math.

qq_28382387的博客 3279

嵌入式开发:用状态机实现STM32按键消抖,告别阻塞延时

在嵌入式系统开发中,处理异步事件和实时响应是核心挑战。状态机作为一种强大的编程模型,通过定义有限的状态、事件和状态转换规则,将复杂的、非线性的控制逻辑转化为清晰、确定且易于维护的代码结构。其技术价值在于实现逻辑的模块化、异步化和非阻塞化,能显著提升代码的可读性、可扩展性和系统实时性。这一思想广泛应用于协议解析、用户界面交互、传感器数据处理等场景。本文以嵌入式开发中基础的按键处理为例,针对传统“延时消抖”方法会阻塞主循环、影响实时性的痛点,深入讲解如何运用状态机思维重构按键消抖逻辑。通过分析状态机的核心三要素

weixin_33377602的博客 339

遥感新手别纠结!实测ENVI 5.3、5.6、6.0三个免费版,教你混搭安装避坑

本文为遥感新手提供ENVI 5.3、5.6、6.0三个免费版的实测对比与混搭安装指南,帮助用户构建零成本高效工作流。详细解析各版本功能差异、共存安装技巧及常见问题解决方案,特别适合课程作业、毕业论文分析和遥感入门练习。

weixin_30819085的博客 473

Vscode C++Debug环境配置(WSL)

本文介绍vscode c++ debug环境三个文件的配置方法,配置完毕即可打断点调试开发。以上只是我摸索出的一种可以调试的配置方式,更多vscode的配置文件用法还有待探索。,生成c_cpp_properties.json,一般保持默认的设置不变即可。文件以后,文件里面有。

qq_44328440的博客 4325

2025反爬终极方案:Python破解Cloudflare v2行为指纹,设备伪装+轨迹模拟拦截率压至1%

Cloudflare v2的反爬逻辑越来越接近“人类行为识别”,单纯的技术破解已失效,核心竞争力变成“模拟真实用户的能力”。本文的终极方案本质是“全方位复刻人类行为”——从设备指纹到操作轨迹,从网络特征到交互模式,让爬虫成为“无法被区分的真实用户”。这套方案的优势是“通用性强”,不仅适用于Cloudflare v2,也能破解大多数高反爬网站(如小红书、知乎、跨境电商)的行为检测;且代码可直接复用,新手只需替换目标URL和数据提取逻辑,就能快速落地。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2354

【笔记】 C/C++ Windows - VScode配置C、C++环境(MinGW 、 cmake)

在 windows 开发 c/c++ 一般是使用 visual studio 作为集成开发环境。但是它集成度非常高、包含的功能非常多;导致学习、使用成本非常高。如果只是要一个编译、调试的环境,可以尝试 vscode 搭建其环境。如果是初学者,相信成功搭建后,能对编译程序有一个新的理解。(而不是在 visual studio 中配置一堆+点击“启动/调试”按钮)

LawssssCat的博客 4549

ISP工程师实战笔记:5种Demosaic算法优缺点对比(含Hamilton/DFPD代码片段)

本文从ISP工程师实战角度,深入对比了五种经典Demosaic算法的优缺点。文章详细剖析了双线性插值、Hamilton、DFPD、DLMMSE和GBTF等算法的核心思想、实现差异与性能表现,并提供了Hamilton和DFPD算法的关键代码片段。重点探讨了在图像信号处理流水线中,如何根据画质、计算复杂度和功耗等工程约束进行算法选型与权衡。

weixin_42527589的博客 248

emqx Java 订阅以及发送 结合若依框架

emqx Java 订阅以及发送 结合若依框架

Spo的博客 1613

VScode 中运行C++,并用g++命令、CMake、配置launch.josn和tasks.json来运行和调试可执行文件

VScode 中运行C++,并用g++命令、CMake、配置launch.josn和tasks.json来运行和调试可执行文件

weixin_42208579的博客 2648

【故障排查】telnet连接失败:端口23不可达的深度分析与解决方案

本文深度解析telnet连接失败时端口23不可达的常见原因与解决方案。从快速自查目标地址、端口到服务端排查,涵盖服务状态检查、防火墙配置及安全组设置,并提供进阶诊断工具与抓包分析方法。文章强调telnet协议的安全风险,建议在生产环境中改用SSH等加密协议进行远程管理。

weixin_28323057的博客 395

【Windows】VSCode中的C++开发和调试

自己记得笔记,太繁琐,防止遗忘

Joke 922

VMware Horizon 8 2111 部署系列(十一)准备RDS主机

RDS (Remote Desktop Service),即远程桌面服务。我们可以使用 Microsoft 远程桌面服务 (RDS) 提供 RDS 主机上的桌面会话并将应用程序传送给多个用户。

白昼的技术专栏 3471

RAP 时代的 Service Binding:把 CDS 业务服务稳稳地“插”到 OData 里

本文深入解析SAP ABAP开发中的关键对象Service Binding,阐述了如何通过三层架构(数据模型、服务定义、服务绑定)实现业务逻辑与协议分离。文章重点分析了Service Binding的核心参数配置,包括服务命名规范、协议类型选择(OData V2/V4、InA、SQL)及服务形态(UI Service与Web API),并通过实际案例说明不同选项的应用场景。同时介绍了服务版本控制机制、发布流程及Fiori预览功能,帮助开发者理解如何通过Service Binding将业务能力高效转化为可消费

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 5712

从零到一:在Mac上为VSCode构建高效的C++开发与调试环境

本文详细指导如何在Mac上为VSCode配置高效的C++开发与调试环境。从安装Xcode命令行工具和VSCode扩展开始,到创建项目、配置编译系统和调试器,再到解决常见问题和提升效率技巧,全面覆盖C++开发环境的搭建过程。特别适合需要在Mac上进行C++开发的程序员。

FLY_THINK2012的博客 375

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

VSCode连接WSL2写C++代码,这几个调试和编译的‘骚操作’让你效率翻倍

本文详细介绍了在VSCode中连接WSL2进行C++开发的五个高效技巧,包括一键编译调试配置、CMake多文件项目管理、GDB高级调试优化、头文件路径智能感知以及远程容器化工作流。这些技巧能显著提升开发效率,特别适合在Windows系统下利用Linux工具链进行C++编程的开发者。

weixin_30619101的博客 322

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

提升C/C++开发效率:VSCode多文件编译模板推荐

提升C/C++开发效率:VSCode多文件编译模板推荐 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在C/C++开发过程中,多文件项目的管理和编译常常是一个繁琐且耗时的任务。为了帮助开发者更高效地进行多文件C/C++项目的开发,我们推出了一个专为Visual Studio Code(VSCode)设计的多文件编译模板。这个模板名为multi_build_vscode...

gitblog_09786的博客 937

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

VScode配置C++时遇到的几个问题

#include出现波浪线; vscode的cpp文件中文注释乱码,控制台输出中文乱码; vscode使用头文件时,出现undefined reference to `XXX’

WLB 的博客 4789

VSCode C/C++ 多文件编译模板

VSCode C/C++ 多文件编译模板 去发现同类优质开源项目:https://gitcode.com/ 简介 本仓库提供了一个适用于 Visual Studio Code (VSCode) 的 C/C++ 多文件编译模板,文件名为 multi_build_vscode.zip。该模板旨在帮助开发者快速搭建和编译多文件的 C/C++ 项目。 主要内容 多文件项目模板:提供了一个完整的 C/C+...

gitblog_09782的博客 741
VectorSpaces
博客等级 码龄5年 2粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值