【VSCode】Windows环境下,VSCode 搭建 cmake 编译环境(通过配置文件配置)
除了之前的使用 VSCode 插件来编译工程外,我们也可以使用配置文件来编译cmake工程,主要依赖 launch.json 和 tasks.json 文件。
目录
一、下载编译器
1、下载 Windows GCC
2、选择编译器路径
二、配置 debug 环境
1、配置 lauch.json 文件
2、配置 tasks.json 文件
三、编译工程
1、测试工程结构
2、开始编译
一、下载编译器
1、下载 Windows GCC
这里是在Windows环境下,所以下载的是 Windows 环境使用的 gcc 编译器。
下载地址: MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net

下载完毕后解压,并将 bin 目录添加到环境变量。bin 目录下有几个比较重要的执行文件

![]()
2、选择编译器路径
将 bin 目录添加到环境变量后,Ctrl + Shift + P 通过 UI 选择编译器路径


二、配置 debug 环境
配置文件 launch.json 和 tasks.json 都在 .vscode 目录下。其他目录可暂时不理会。

1、配置 lauch.json 文件
主要参数说明:
- program: 可执行文件的完整路径。这里的执行文件名必须和cmake生成的执行文件名一致
- miDebuggerPath: 调试器的完整路径。(即便添加了环境变量也需要填入完整路径)
- preLaunchTask:调试前要做的操作,会去tasks.json 文件中找对应的标签。cmake工程在调试之前一般需要 cmake .. ,然后再 make 生成执行文件
{"version": "0.2.0","configurations": [{"name": "C/C++ Runner: Debug Session", // 配置名称(调试时会在下拉菜单中显示)"type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/testProj.exe", // 执行文件的完整路径(这里的执行文件名必须和cmake生成的执行文件名一致)"args": [], // 执行文件运行时,传递给执行文件的命令行参数"stopAtEntry": false, // 一般设为false,设为true时会将程序暂停在程序入口"externalConsole": true, // 一般设为true,表示调试时显示控制台"cwd": "${workspaceFolder}", // 调试程序的工作目录,一般为 ${workspaceFolder} 即代码所在目录"MIMode": "gdb","miDebuggerPath": "D:/Download/Windows GCC/x86_64-7.3.0-release-win32-sjlj-rt_v5-rev0/mingw64/bin/gdb.exe", // 使用的调试器的全路径"setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "build", // 表示调试前要做的操作,这里的build只是一个标签,标签内容在 tasks.json 中}]
}

2、配置 tasks.json 文件
这里注意 -G MinGW Makefiles,如果不加这个选项,默认会按照 Visual Studio 的标准进行编译,生成的文件如下:

很显然这并不是我们期望的,我希望生成的是 Makefile 文件,因此这里需要加上 -G MinGW Makefiles 选项,生成 mingw32-make 能够编译的Makefile。生成的文件如下:

{"tasks": [{"label": "build", // build 操作"dependsOn":["cmake", // build 操作依赖于 cmake 和 make 操作"make"]},{"label": "cmake", // cmake 操作"type":"shell", "command":"cmake", // 执行 cmake 操作所使用的命令"args": [ // cmake 命令执行时的命令行参数"-G MinGW Makefiles", // 生成 mingw32-make 能够编译的Makefile"../"],},{"label": "make", // make 操作"command":"mingw32-make.exe", // 执行 make 操作所使用的命令(mingw32-make.exe已经添加了环境变量)"args": [],"options": {"cwd": "${workspaceFolder}/build" // 表示执行当前操作的工作目录}},],"version": "2.0.0","options": {"cwd": "${workspaceFolder}/build" // 表示执行上述操作时的工作目录},
}

三、编译工程
1、测试工程结构
因为是使用配置文件配置,需要在 CMakeLists.txt 的同级目录下创建一个 build 目录

CMakeLists.txt
cmake_minimum_required(VERSION 3.15.0)
project(testProj)file(GLOB ALL_SOURCES *.cpp *.h)add_executable(${PROJECT_NAME} ${ALL_SOURCES})
main.cpp
#include <iostream>int main(void)
{printf("hello world \n");return 0;
}
2、开始编译
点击 Start Debugging 或者按 F5 就可以开始编译了。

第一次编译会报错,因为一开始 build 目录为空,cmake 还未执行完,make 操作就已经先运行了,所以会出现找不到 Makefile 的问题。


F5 再次编译,这个时候不出意外的话就会编译通过了

参考文章:
04-vscode搭建cmake的编译环境_vscode配置cmake编译-CSDN博客
相关文章:
【VSCode】Windows环境下,VSCode 搭建 cmake 编译环境(通过配置文件配置)
除了之前的使用 VSCode 插件来编译工程外,我们也可以使用配置文件来编译cmake工程,主要依赖 launch.json 和 tasks.json 文件。 目录 一、下载编译器 1、下载 Windows GCC 2、选择编译器路径 二、配置 debug 环境 1、配置 lauch.json 文件 2、配置…...
useragent识别访问设备
背景需求 ruoyi框架,前后端分离。现在要在用户访问的时候根据不同的设备跳转到不同的登录页面。 教程 router/index.js 修改src/router/index.js,在这里增加自己的要跳转的页面 permission.js 在白名单中添加自己的登录页面 增加以下识别的代码 le…...
紫光同创FPGA实现UDP协议栈网络视频传输,带录像和抓拍功能,基于YT8511和RTL8211,提供2套PDS工程源码和技术支持
目录 1、前言免责声明 2、相关方案推荐我这里已有的以太网方案紫光同创FPGA精简版UDP方案紫光同创FPGA带ping功能UDP方案紫光同创FPGA精简版UDP视频传输方案 3、设计思路框架OV5640摄像头配置及采集数据缓冲FIFOUDP协议栈详解MAC层发送MAC发送模式MAC层接收ARP发送ARP接收ARP缓…...
【机器学习】逻辑回归
文章目录 逻辑回归定义损失函数正则化 sklearn里面的逻辑回归多项式逻辑回归 逻辑回归 逻辑回归,是一种名为“回归”的线性分类器,其本质是由线性回归变化而来的,一种广泛使用于分类问题中的广义回归算法。 线性回归是机器学习中最简单的的…...
DITA-OT 4.0新特性 - PDF themes,定制PDF样式的新方法
随着DITA-OT 4.0的发布,它提供了一种新的定制PDF样式方法,这种方法就是PDF theme。这篇文章来聊一聊这种定制PDF输出的新方法和实验结果。 在进入PDF theme细节之前,为各位读者梳理一下DITA-OT将DITA和Markdown发布成PDF的几种方法。 - 1 …...
MySQL 8.0 OCP认证精讲视频、环境和题库之四 多实例启动 缓存、事务、脏读
一、配置第一个mysqld服务 1、编辑选项文件,指定以下选项: [mysqld] basedir/mysql80 datadir/mysql80/data1 socket/mysql80/data1/mysqld.sock pid-file/mysql80/data1/mysqld.pid log-error/mysql80/dat…...
对代码感兴趣 但不擅长数学怎么办——《机器学习图解》来救你
目前,该领域中将理论与实践相结合、通俗易懂的著作较少。机器学习是人工智能的一部分,很多初学者往往把机器学习和深度学习作为人工智能入门的突破口,非科班出身的人士更是如此。当前,国内纵向复合型人才和横向复合型人才奇缺;具有…...
【EI会议征稿】第三届大数据、信息与计算机网络国际学术会议(BDICN 2024)
第三届大数据、信息与计算机网络国际学术会议(BDICN 2024) 2024 3rd International Conference on Big Data, Information and Computer Network 第三届大数据、信息与计算机网络国际学术会议(BDICN 2024)定于2024年1月12-14日在…...
【Arduino+ESP32+腾讯云+sg90】强制门户+腾讯云控制开关灯
作者有话说 博主对于Arduino开发并没有基础,但是为了实现更加方便的配网,这几天一直在尝试用ESP32-12F(因为手头刚好有一个,其他的也可以)来做远程开关灯!不知道大家是否注意到,上一篇利用STM32…...
windows中elasticsearch7中添加用户名密码验证
1.找到elsatic的bin目录输入cmd 2.生成ca证书 输入 elasticsearch-certutil ca 在es7根目录生成ca证书,输入密码时直接回车即可,否则后面会报错 Please enter the desired output file [elastic-stack-ca.p12]: #这里直接回车即可 Enter password for…...
linux安装达梦数据库(命令行安装)
安装达梦数据库 创建安装用户 1,创建安装用户组dinstall [rootdmDMServer1 ~]# groupadd -g 12345 dinstallgroupadd : 创建组 -g : 指定组id(GID) 12345: 指定的组名称 dinstall : 组名 2,创建安装用户dmdba [rootdmDMSe…...
Flutter——最详细(CustomScrollView)使用教程
CustomScrollView简介 创建一个 [ScrollView],该视图使用薄片创建自定义滚动效果。 [SliverList],这是一个显示线性子项列表的银子列表。 [SliverFixedExtentList],这是一种更高效的薄片,它显示沿滚动轴具有相同范围的子级的线性列…...
解决容器内deepspeed微调大模型报错
解决容器内deepspeed微调大模型报错:[launch.py:315:sigkill_handler] Killing subprocess 问题描述:解决办法 问题描述: 在容器中用deepspeed微调百川大模型2时,出现上述错误,错误是由于生成容器时,共享内…...
UE 插件模块引用
如Plugons中的模块A想要引用模块B: 1、模块A中的.uplugin文件加入↓ 2、模块A中的.Build.cs文件加入↓ 3、在模块A需要用到模块B的地方直接include 4、重新generate Project 5、重新编译 注意两个模块之间不能循环引用...
python元组、拆包和装包
注意 元组不能修改元素 元组:如果元素为字符串且元素为1个,必须加一个, ********* t1 (aa,) 下标和切片 in not in for ... in ... 元组转为列表 拆包、装包...
1-Docker安装MySQL8.0
1 背景知识记录 1.1 MySQL 的基本配置记录 MySQL的配置文件目录(/etc/mysql): root2dd6033b5c17:/etc/mysql# pwd /etc/mysql root2dd6033b5c17:/etc/mysql# ls conf.d my.cnf my.cnf.fallback MySQL的data文件目录(/var/lib/my…...
配电房智能化改造在加油站等的应用
随着科技的发展和智能化趋势的推进,对加油站配电房进行智能化改造成为了一个必然的选择。智能化改造不仅可以提高加油站的工作效率,减少事故发生率,还可以实现能源的合理利用,提高经济效益。 力安科技加油站智能化改造升级是一种高…...
集准测试-架构真题(五十六)
如果数据库单标即可实现业务功能,采用()方式进行数据交换与处理较为合适。如果通过数据库不同表的连接操作获取数据才能实现业务功能,这时候采用()方式进行数据交换与处理合适。 主动记录数据网关包装器数…...
木与空间的舞蹈:奥地利住宅的独特设计
国外著名设计师,为一位业主设计了一座住宅,附带有附属建筑和有盖的入口,形成了像庭院一样的建筑群。 这座住宅采用了当地的传统建筑风格,有长方形的平面和陡峭的顶棚,与周围的房屋相符。然而,内部设计别具一…...
性能优化-卡顿优化-tarce抓取及分析
性能优化(卡顿分析) 文章目录 一、抓取trace的方法1.使用systrace抓取trace2.使用atrace抓取3.使用Perfetto抓取trace 二、trace文件的分析1.快捷操作1.1 导航操作1.2 快捷操作 2.chrome trace工具分析trace文件3.Prefetto分析trace文件 一、抓取trace的…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
