当前位置: 首页 > news >正文

【VSCode】Windows环境下,VSCode 搭建 cmake 编译环境(通过配置文件配置)

除了之前的使用 VSCode 插件来编译工程外,我们也可以使用配置文件来编译cmake工程,主要依赖 launch.jsontasks.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 插件来编译工程外&#xff0c;我们也可以使用配置文件来编译cmake工程&#xff0c;主要依赖 launch.json 和 tasks.json 文件。 目录 一、下载编译器 1、下载 Windows GCC 2、选择编译器路径 二、配置 debug 环境 1、配置 lauch.json 文件 2、配置…...

useragent识别访问设备

背景需求 ruoyi框架&#xff0c;前后端分离。现在要在用户访问的时候根据不同的设备跳转到不同的登录页面。 教程 router/index.js 修改src/router/index.js&#xff0c;在这里增加自己的要跳转的页面 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里面的逻辑回归多项式逻辑回归 逻辑回归 逻辑回归&#xff0c;是一种名为“回归”的线性分类器&#xff0c;其本质是由线性回归变化而来的&#xff0c;一种广泛使用于分类问题中的广义回归算法。 线性回归是机器学习中最简单的的…...

DITA-OT 4.0新特性 - PDF themes,定制PDF样式的新方法

随着DITA-OT 4.0的发布&#xff0c;它提供了一种新的定制PDF样式方法&#xff0c;这种方法就是PDF theme。这篇文章来聊一聊这种定制PDF输出的新方法和实验结果。 在进入PDF theme细节之前&#xff0c;为各位读者梳理一下DITA-OT将DITA和Markdown发布成PDF的几种方法。 - 1 …...

MySQL 8.0 OCP认证精讲视频、环境和题库之四 多实例启动 缓存、事务、脏读

一、配置第一个mysqld服务 1、编辑选项文件&#xff0c;指定以下选项&#xff1a; [mysqld] basedir/mysql80 datadir/mysql80/data1 socket/mysql80/data1/mysqld.sock pid-file/mysql80/data1/mysqld.pid log-error/mysql80/dat…...

对代码感兴趣 但不擅长数学怎么办——《机器学习图解》来救你

目前&#xff0c;该领域中将理论与实践相结合、通俗易懂的著作较少。机器学习是人工智能的一部分&#xff0c;很多初学者往往把机器学习和深度学习作为人工智能入门的突破口&#xff0c;非科班出身的人士更是如此。当前&#xff0c;国内纵向复合型人才和横向复合型人才奇缺;具有…...

【EI会议征稿】第三届大数据、信息与计算机网络国际学术会议(BDICN 2024)

第三届大数据、信息与计算机网络国际学术会议&#xff08;BDICN 2024&#xff09; 2024 3rd International Conference on Big Data, Information and Computer Network 第三届大数据、信息与计算机网络国际学术会议&#xff08;BDICN 2024&#xff09;定于2024年1月12-14日在…...

【Arduino+ESP32+腾讯云+sg90】强制门户+腾讯云控制开关灯

作者有话说 博主对于Arduino开发并没有基础&#xff0c;但是为了实现更加方便的配网&#xff0c;这几天一直在尝试用ESP32-12F&#xff08;因为手头刚好有一个&#xff0c;其他的也可以&#xff09;来做远程开关灯&#xff01;不知道大家是否注意到&#xff0c;上一篇利用STM32…...

windows中elasticsearch7中添加用户名密码验证

1.找到elsatic的bin目录输入cmd 2.生成ca证书 输入 elasticsearch-certutil ca 在es7根目录生成ca证书&#xff0c;输入密码时直接回车即可&#xff0c;否则后面会报错 Please enter the desired output file [elastic-stack-ca.p12]: #这里直接回车即可 Enter password for…...

linux安装达梦数据库(命令行安装)

安装达梦数据库 创建安装用户 1,创建安装用户组dinstall [rootdmDMServer1 ~]# groupadd -g 12345 dinstallgroupadd : 创建组 -g : 指定组id&#xff08;GID&#xff09; 12345&#xff1a; 指定的组名称 dinstall &#xff1a; 组名 2,创建安装用户dmdba [rootdmDMSe…...

Flutter——最详细(CustomScrollView)使用教程

CustomScrollView简介 创建一个 [ScrollView]&#xff0c;该视图使用薄片创建自定义滚动效果。 [SliverList]&#xff0c;这是一个显示线性子项列表的银子列表。 [SliverFixedExtentList]&#xff0c;这是一种更高效的薄片&#xff0c;它显示沿滚动轴具有相同范围的子级的线性列…...

解决容器内deepspeed微调大模型报错

解决容器内deepspeed微调大模型报错&#xff1a;[launch.py:315:sigkill_handler] Killing subprocess 问题描述&#xff1a;解决办法 问题描述&#xff1a; 在容器中用deepspeed微调百川大模型2时&#xff0c;出现上述错误&#xff0c;错误是由于生成容器时&#xff0c;共享内…...

UE 插件模块引用

如Plugons中的模块A想要引用模块B&#xff1a; 1、模块A中的.uplugin文件加入↓ 2、模块A中的.Build.cs文件加入↓ 3、在模块A需要用到模块B的地方直接include 4、重新generate Project 5、重新编译 注意两个模块之间不能循环引用...

python元组、拆包和装包

注意 元组不能修改元素 元组&#xff1a;如果元素为字符串且元素为1个&#xff0c;必须加一个&#xff0c; ********* t1 (aa,) 下标和切片 in not in for ... in ... 元组转为列表 拆包、装包...

1-Docker安装MySQL8.0

1 背景知识记录 1.1 MySQL 的基本配置记录 MySQL的配置文件目录&#xff08;/etc/mysql&#xff09;&#xff1a; root2dd6033b5c17:/etc/mysql# pwd /etc/mysql root2dd6033b5c17:/etc/mysql# ls conf.d my.cnf my.cnf.fallback MySQL的data文件目录&#xff08;/var/lib/my…...

配电房智能化改造在加油站等的应用

随着科技的发展和智能化趋势的推进&#xff0c;对加油站配电房进行智能化改造成为了一个必然的选择。智能化改造不仅可以提高加油站的工作效率&#xff0c;减少事故发生率&#xff0c;还可以实现能源的合理利用&#xff0c;提高经济效益。 力安科技加油站智能化改造升级是一种高…...

集准测试-架构真题(五十六)

如果数据库单标即可实现业务功能&#xff0c;采用&#xff08;&#xff09;方式进行数据交换与处理较为合适。如果通过数据库不同表的连接操作获取数据才能实现业务功能&#xff0c;这时候采用&#xff08;&#xff09;方式进行数据交换与处理合适。 主动记录数据网关包装器数…...

木与空间的舞蹈:奥地利住宅的独特设计

国外著名设计师&#xff0c;为一位业主设计了一座住宅&#xff0c;附带有附属建筑和有盖的入口&#xff0c;形成了像庭院一样的建筑群。 这座住宅采用了当地的传统建筑风格&#xff0c;有长方形的平面和陡峭的顶棚&#xff0c;与周围的房屋相符。然而&#xff0c;内部设计别具一…...

性能优化-卡顿优化-tarce抓取及分析

性能优化&#xff08;卡顿分析&#xff09; 文章目录 一、抓取trace的方法1.使用systrace抓取trace2.使用atrace抓取3.使用Perfetto抓取trace 二、trace文件的分析1.快捷操作1.1 导航操作1.2 快捷操作 2.chrome trace工具分析trace文件3.Prefetto分析trace文件 一、抓取trace的…...

【力扣链表篇】19.删除链表的倒数第N个节点

题目&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]…...

【Survival Analysis】【机器学习】【3】 SHAP可解釋 AI

前言&#xff1a; SHAP&#xff08;SHapley Additive explanations) 是一种基于博弈论的可解释工具。 现在很多高分的 论文里面都会带这种基于SHAP 分析的图&#xff0c;用于评估机器学习模型中特征对预测结果的贡献度. pip install -i https://pypi.tuna.tsinghua.edu.cn/sim…...

㊗️高考加油

以下是极为详细的高考注意事项清单&#xff0c;涵盖考前、考中、考后全流程&#xff0c;建议逐条核对&#xff1a; 一、考前准备 1. 证件与物品 必带清单&#xff1a; 准考证&#xff1a;打印2份&#xff08;1份备用&#xff09;&#xff0c;塑封或夹在透明文件袋中防皱湿。身…...

ASP.NET Core使用Quartz部署到IIS资源自动被回收解决方案

iis自动回收的原因 回收机制默认配置&#xff0c;间隔时间是1740分钟&#xff0c;意思是&#xff1a;默认情况下每1740分钟(29小时)回收一次&#xff0c;定期检查应用程序池中的工作进程&#xff0c;并终止那些已经存在很长时间或已经使用了太多资源的工作进程 进程模型默认配…...

赋能大型语言模型与外部世界交互——函数调用的崛起

大型语言模型 (LLM) 近年来在自然语言处理领域取得了革命性的进展&#xff0c;展现出强大的文本理解、生成和对话能力。然而&#xff0c;这些模型在与外部实时数据源和动态系统交互方面存在固有的局限性 1。它们主要依赖于训练阶段学习到的静态知识&#xff0c;难以直接访问和利…...

录制mp4

目录 单线程保存mp4 多线程保存mp4 rtsp ffmpeg录制mp4 单线程保存mp4 import cv2 import imageiocv2.namedWindow(photo, 0) # 0窗口大小可以任意拖动&#xff0c;1自适应 cv2.resizeWindow(photo, 1280, 720) url "rtsp://admin:aa123456192.168.1.64/h264/ch1/main…...

数据库管理-第334期 Oracle Database 23ai测试版RAC部署文档(20250607)

数据库管理334期 2024-06-07 数据库管理-第334期 Oracle Database 23ai测试版RAC部署文档&#xff08;20240607&#xff09;1 环境与安装介质2 操作标准系统配置2.1 关闭防火墙2.2 关闭SELinux2.3 关闭avahi-daemon2.4 时间同步配置 3 存储服务器配置3.1 配置本地yum源3.2 安装…...

RT-Thread内核组成——内核移植

内核移植就是指将 RT-Thread 内核在不同的芯片架构、不同的板卡上运行起来&#xff0c;能够具备线程管理和调度&#xff0c;内存管理&#xff0c;线程间同步和通信、定时器管理等功能。移植可分为 CPU 架构移植和 BSP&#xff08;Board support package&#xff0c;板级支持包&…...

多模型协同:基于 SAM 分割 + YOLO 检测 + ResNet 分类的工业开关状态实时监控方案

一、技术优势与适配性分析 1. 任务分工的合理性 YOLO&#xff08;目标检测&#xff09; 核心价值&#xff1a;快速定位工业开关在图像中的位置&#xff08;边界框&#xff09;&#xff0c;为后续分割和分类提供ROI&#xff08;感兴趣区域&#xff09;。工业场景适配性&#xf…...

2048游戏的技术实现分析-完全Java和Processing版

目录 简介Processing库基础项目构建指南项目结构核心数据结构游戏核心机制图形界面实现性能优化代码详解设计模式分析测试策略总结与展望简介 2048是一款由Gabriele Cirulli开发的经典益智游戏。本文将深入分析其Java实现版本的技术细节。该实现使用了Processing库来创建图形界…...