VSCode C/C++ 分目录+多文件编译配置2

前言:介绍 task.json 和 launch.json 文件

task.json 和 launch.json 是用于配置 VS Code 编辑器中的任务 和 调试功能的两个重要文件。

task.json 文件用于配置任务,它定义了执行特定操作的任务,并提供了相应的命令和参数。以下是 task.json 的一些常见配置属性:

“tasks”:包含了一个或多个任务配置,每个配置定义了一个特定的任务。
“label”:指定了任务的名称,用于在 VS Code 中显示。
“command”:指定了要执行的命令或可执行文件的路径。
“args”:指定了传递给命令或可执行文件的参数。
“options”:指定了任务运行时的选项,如工作目录、环境变量等。
“problemMatcher”:指定了问题匹配器,用于捕获任务输出中的错误和警告信息。
其他任务特定的属性,如 “isBackground”(指定任务是否在后台运行)等。
launch.json 文件用于配置调试器,它定义了调试会话的启动方式以及各种调试选项。以下是 launch.json 的一些常见配置属性:

“configurations”:包含了一个或多个调试配置,每个配置定义了一个特定的调试方案。
“type”:指定了要使用的调试器类型,如 C++、Python、Node.js 等。
“request”:指定了调试器的请求类型,例如 “launch”、“attach” 等。
“program”:指定了要调试的程序的入口点路径。
“args”:指定了传递给被调试程序的命令行参数。
“env”:指定了环境变量,用于设置调试过程中的环境。
其他调试器特定的属性,如 “preLaunchTask”(指定在调试之前执行的任务)、“sourceFileMap”(指定源代码与实际文件路径之间的映射关系)等。
总结起来,task.json 用于配置任务,以便在编辑器中执行自定义的操作。launch.json 用于配置调试器,以便在编辑器中进行程序调试。它们的作用是提供了一种简便的方式来定义和管理调试和任务相关的设置,使得开发者可以更高效地进行调试和任务操作。

1、项目结构(分目录+多文件形式)
在这里插入图片描述


${workspaceFolder} :表示当前workspace文件夹路径${workspaceRootFolderName}:表示workspace的文件夹名${file}:文件自身的绝对路径${relativeFile}:文件在workspace中的路径${fileBasenameNoExtension}:当前文件的文件名,不带后缀${fileBasename}:当前文件的文件名${fileDirname}:文件所在的文件夹路径${fileExtname}:当前文件的后缀${lineNumber}:当前文件光标所在的行号${env:PATH}:系统中的环境变量

2、task.json文件
2.1 修改前

{"tasks": [{"type": "cppbuild","label": "C/C++: g++.exe 生成活动文件","command": "D:\\App\\Microsoft VS Code\\mingw64\\bin\\g++.exe","args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": "build","detail": "调试器生成的任务。"},{"type": "cppbuild","label": "C/C++: g++.exe 生成活动文件 ver(1)","command": "D:\\App\\Microsoft VS Code\\mingw64\\bin\\g++.exe","args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "调试器生成的任务。"}],"version": "2.0.0"
}

2.2 修改后

{"tasks": [{"type": "cppbuild","label": "C/C++: g++.exe 生成活动文件",  //需要确保 tasks.json 的 label 属性 与 launch.json 的 preLaunchTask 属性 完全相同"command": "D:\\App\\Microsoft VS Code\\mingw64\\bin\\g++.exe","args": ["-fdiagnostics-color=always",// "-g",// "${fileDirname}/*.cpp","-g", //-g:生成调试信息,便于在编译后进行程序调试。"${workspaceFolder}/src/*.cpp",  // "${workspaceFolder}/src/*.cpp":指定了要编译的源代码文件的路径。${workspaceFolder} 表示项目根目录的路径,/src/*.cpp 表示在 src 目录下的所有 .cpp 文件。//增加"-I", //-I:指定了头文件搜索路径。"${workspaceFolder}/inc", // 表示头文件所在的目录路径。${workspaceFolder} 表示项目根目录的路径,/inc 表示在项目根目录下的 inc 目录。// "-o",// "${fileDirname}\\${fileBasenameNoExtension}.exe""-o", //-o:指定输出文件的路径和名称。"${workspaceFolder}/out/${fileBasenameNoExtension}.exe" //表示输出文件的路径和名称。${workspaceFolder} 表示项目根目录的路径,/out/ 表示在项目根目录下的 out 目录,${fileBasenameNoExtension} 表示当前被编译的源代码文件的基本名称(不包括扩展名),.exe 表示生成的可执行文件的扩展名。],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "调试器生成的任务。"}],"version": "2.0.0"
}

3、launch.json文件
3.1 修改前

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "g++.exe - 生成和调试活动文件","type": "cppdbg","request": "launch","program": "${fileDirname}\\${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${fileDirname}", "environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "D:\\App\\Microsoft VS Code\\mingw64\\bin\\gdb.exe","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}],"preLaunchTask": "C/C++: g++.exe 生成活动文件" }]
}

3.2 修改后

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "g++.exe - 生成和调试活动文件","type": "cppdbg","request": "launch",//"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",//修改为:"program": "${workspaceFolder}\\out\\${fileBasenameNoExtension}.exe", //这里"args": [],"stopAtEntry": false,//"cwd": "${fileDirname}", //"cwd" 是表示工作目录(current working directory)的缩写。"cwd": "${fileDirname}" 表示将当前文件所在的目录作为工作目录。//修改为:"cwd": "${workspaceFolder}\\out", //"cwd": "${workspaceFolder}\out" 表示将工作目录设置为当前工作区的根目录下的 "out" 文件夹"environment": [],"externalConsole": true,"MIMode": "gdb","miDebuggerPath": "D:\\App\\Microsoft VS Code\\mingw64\\bin\\gdb.exe","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}],"preLaunchTask": "C/C++: g++.exe 生成活动文件" //tasks.json --> label == launch.json --> preLaunchTask}]
}

4、实现示例
VSCode C/C++ 分目录+多文件编译配置2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/118197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2、Linux权限理解

个人主页:Lei宝啊 愿所有美好如期而遇 目录 前言 Linux权限的概念 1.文件访问者的分(人) 2.文件类型和访问权限(事物属性) 3.文件权限值的表示方法 4.文件访问权限的相关设置方法 file指令 目录的权限 粘滞位 关于权限的总结 前言 在开始Linux权限理…

excel常用的几个函数

1、MID函数 通常用来返回返回指定字符串中的子串。 函数公式: MID(string, starting_at, extract_length) String(必填):包含要提取字符的文本字符串 starting_at(必填):文本中要提取的第一个字…

YOLO目标检测——行人数据集【含对应voc、coco和yolo三种格式标签+划分脚本】

实际项目应用:智能监控、人机交互、行为分析、安全防护数据集说明:行人检测数据集,真实场景的高质量图片数据,数据场景丰富标签说明:使用lableimg标注软件标注,标注框质量高,含voc(xml)、coco(j…

docker-compose安装ES7.14和Kibana7.14(有账号密码)

一、docker-compose安装ES7.14.0和kibana7.14.0 1、下载镜像 1.1、ES镜像 docker pull elasticsearch:7.14.0 1.2、kibana镜像 docker pull kibana:7.14.0 2、docker-compose安装ES和kibana 2.1、创建配置文件目录和文件 #创建目录 mkdir -p /home/es-kibana/config mkdir…

音视频技术开发周刊 | 316

每周一期,纵览音视频技术领域的干货。 新闻投稿:contributelivevideostack.com。 日程揭晓!速览深圳站大会专题议程详解 LiveVideoStackCon 2023 音视频技术大会深圳站,保持着往届强大的讲师阵容以及高水准的演讲质量。两天的参会…

【解锁未来】探索Web3的无限可能性-01

文章目录 前言什么是Web3? 前言 还记得你第一次听说比特币吗?也许那只是一个关于新技术将改变一切的微弱嗡嗡声。也许你会有一种 "FOMO "的感觉,因为那些早早入场的人突然积累了一大笔财富–尽管你并不清楚这些 "钱 "可…

flutter开发的一个小小小问题,内网依赖下不来

问题 由于众所周知的原因,flutter编译时,经常出现Could not get resource https://storage.googleapis.com/download.flutter.io…的问题,如下: * What went wrong: Could not determine the dependencies of task :app:lintVit…

ip报头和ip报文切片组装问题

在tcp层将数据打包封装向下传递后,网络层将其整个看为一个数据,然后对其数据加网络报头操作,在网络层最具有代表的协议就是ip协议。在这里我们探究ipv4的报头。 ip报头 4位版本:指定ip的版本号,对于ipv4来说就是4。 …

asp.net文档管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net文档管理系统是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言开发 asp.net文档管理系统 二、功能介绍 (1…

C++ list 的使用

目录 1. 构造函数 1.1 list () 1.2 list (size_t n, const T& val T()) 1.3 list (InputIterator first, InputIterator last) 2. bool empty() const 3. size_type size() const 4. T& front() 4. T& back() 5. void push_front (const T& val) 6.…

FL Studio 21 for Mac中文破解版百度网盘免费下载安装激活

FL Studio 21 for Mac中文破解版是Mac系统中的一款水果音乐编辑软件,提供多种插件,包括采样器、合成器和效果器,可编辑不同风格的音乐作品,Pattern/Song双模式,可兼容第三方插件和音效包,为您的创意插上翅膀…

java _JDBC 开发

目录 一.封装JDBCUtiles 二.事务 三.批处理 四.数据库连接池 C3P0 Druidf(德鲁伊)阿里 五.Apache-DBUtiles 六.Apache-DBUtils 七.DAO 和增删改查 通用方法 - BasicDao 一.封装JDBCUtiles 说明:在jdbc操作中,获取连接和释放资源&#…

设计模式:代理模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)

上一篇《组合模式》 下一篇《命令模式》 简介: 代理模式,它是一种结构型设计模式,它通过引入一个代理对象来控制对原始对象的访问。代理模式的主要目的是在保持原始对象…

《动手学深度学习 Pytorch版》 10.4 Bahdanau注意力

10.4.1 模型 Bahdanau 等人提出了一个没有严格单向对齐限制的可微注意力模型。在预测词元时,如果不是所有输入词元都相关,模型将仅对齐(或参与)输入序列中与当前预测相关的部分。这是通过将上下文变量视为注意力集中的输出来实现…

【Elasticsearch】es脚本编程使用详解

目录 一、es脚本语言介绍 1.1 什么是es脚本 1.2 es脚本支持的语言 1.3 es脚本语言特点 1.4 es脚本使用场景 二、环境准备 2.1 docker搭建es过程 2.1.1 拉取es镜像 2.1.2 启动容器 2.1.3 配置es参数 2.1.4 重启es容器并访问 2.2 docker搭建kibana过程 2.2.1 拉取ki…

LSKA(大可分离核注意力):重新思考CNN大核注意力设计

文章目录 摘要1、简介2、相关工作3、方法4、实验5、消融研究6、与最先进方法的比较7、ViTs和CNNs的鲁棒性评估基准比较8、结论 摘要 https://arxiv.org/pdf/2309.01439.pdf 大型可分离核注意力(LSKA)模块的视觉注意力网络(VAN)已…

Linux CentOS 8(firewalld的配置与管理)

Linux CentOS 8(firewalld的配置与管理) 目录 一、firewalld 简介二、firewalld 工作概念1、预定义区域(管理员可以自定义修改)2、预定义服务 三、firewalld 配置方法1、通过firewall-cmd配置2、通过firewall图形界面配置 四、配置…

利用Jpom在线构建Spring Boot项目

1 简介 前面介绍了运用Jpom构建部署Vue项目,最近研究了怎么部署Spring Boot项目,至此,一套简单的前后端项目就搞定了。 2 基本步骤 因为就是一个简单的自研测试项目,所以构建没有使用docker容器,直接用java -jar命令…

Java程序设计进阶

Java异常处理机制 异常 异常的最高父类是 Throwable,在 java.lang 包下。 Throwable 类的方法主要有: 方法说明public String getMessage()返回对象的错误信息public void printStackTrace()输出对象的跟踪信息到标准错误输出流public void printSta…

【项目设计】网络对战五子棋(下)

我不再装模作样地拥有很多朋友,而是回到了孤单之中,以真正的我开始了独自的生活。有时我也会因为寂寞而难以忍受空虚的折磨,但我宁愿以这样的方式来维护自己的自尊,也不愿以耻辱为代价去换取那种表面的朋友。 文章目录 一、项目设…