当前位置: 首页 > 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博客

http://www.lryc.cn/news/197279.html

相关文章:

  • useragent识别访问设备
  • 紫光同创FPGA实现UDP协议栈网络视频传输,带录像和抓拍功能,基于YT8511和RTL8211,提供2套PDS工程源码和技术支持
  • 【机器学习】逻辑回归
  • DITA-OT 4.0新特性 - PDF themes,定制PDF样式的新方法
  • MySQL 8.0 OCP认证精讲视频、环境和题库之四 多实例启动 缓存、事务、脏读
  • 对代码感兴趣 但不擅长数学怎么办——《机器学习图解》来救你
  • 【EI会议征稿】第三届大数据、信息与计算机网络国际学术会议(BDICN 2024)
  • 【Arduino+ESP32+腾讯云+sg90】强制门户+腾讯云控制开关灯
  • windows中elasticsearch7中添加用户名密码验证
  • linux安装达梦数据库(命令行安装)
  • Flutter——最详细(CustomScrollView)使用教程
  • 解决容器内deepspeed微调大模型报错
  • UE 插件模块引用
  • python元组、拆包和装包
  • 1-Docker安装MySQL8.0
  • 配电房智能化改造在加油站等的应用
  • 集准测试-架构真题(五十六)
  • 木与空间的舞蹈:奥地利住宅的独特设计
  • 性能优化-卡顿优化-tarce抓取及分析
  • P5740 【深基7.例9】最厉害的学生
  • Hive引擎MR、Tez、Spark
  • 不写前端代码,curl直接调试sse
  • 百分点科技受邀参加“一带一路”国际合作高峰论坛
  • git学习——第4节 时光机穿梭
  • golang 在 Mac、Linux、Window 下交叉编译
  • 半导体可靠性测试方法都有哪些?
  • 百度智能云发布AI原生应用工作台,为大模型落地五类需求提供最优
  • flutter 手机卡住,需要等待,主线程被占用
  • 微信小程序 onLoad(option) 方法
  • Vue3 实现文件预览 Word Excel pdf 图片 视频等格式 大全!!!!