【C++】使用vscode进行 C/C++ 开发,内含c_cpp_properties.json、launch.json 和 tasks.json解释

ops/2024/10/20 10:38:06/
cle class="baidu_pl">
cle_content" class="article_content clearfix">
content_views" class="markdown_views prism-atom-one-dark">cap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">

c="https://i-blog.csdnimg.cn/direct/5cc372fd448f4218866ee4f7e450a9a9.png" alt="在这里插入图片描述" />

在 Visual Studio Code (VSCode) 中进行 C/C++ 开发时࿰c;这三个 <code>.jsoncode> 文件(<code>c_cpp_properties.jsoncode>、<code>launch.jsoncode> 和 <code>tasks.jsoncode>)分别用于配置编译、调试和代码提示等功能。它们是 VSCode 配置环境的一部分࿰c;由 C/C++ 扩展生成࿰c;帮助你编写、编译、调试 C/C++ 程序。

c_cpp_propertiesjson_5">1. <code>c_cpp_properties.jsoncode>

这个文件用于配置 C/C++ 代码的智能提示(IntelliSense)、编译器路径、包括的头文件路径等。它控制了 VSCode 中 C/C++ 代码的代码分析和自动补全功能。

常见的配置项:
  • <code>includePathcode>:指定头文件的搜索路径࿰c;VSCode 会根据这些路径提供代码补全和智能提示。
  • <code>definescode>:定义编译时使用的宏。
  • <code>compilerPathcode>:指定编译器的路径࿰c;通常是 <code>gcccode> 或 <code>clangcode>࿰c;用于解析代码。
  • <code>intelliSenseModecode>:指定 VSCode 使用的 IntelliSense 模式࿰c;例如 <code>gcc-x64code> 或 <code>clang-x64code>。
c_cpp_propertiesjson_14">示例 <code>c_cpp_properties.jsoncode>:
<code class="prism language-json">class="token punctuation">{class="token string">"configurations"class="token operator">: class="token punctuation">[class="token punctuation">{class="token string">"name"class="token operator">: class="token string">"Win32"class="token punctuation">,class="token string">"includePath"class="token operator">: class="token punctuation">[class="token string">"${workspaceFolder}/**"class="token punctuation">]class="token punctuation">,class="token string">"defines"class="token operator">: class="token punctuation">[class="token punctuation">]class="token punctuation">,class="token string">"compilerPath"class="token operator">: class="token string">"C:/Program Files/MinGW/bin/gcc.exe"class="token punctuation">,class="token string">"cStandard"class="token operator">: class="token string">"c11"class="token punctuation">,class="token string">"cppStandard"class="token operator">: class="token string">"c++17"class="token punctuation">,class="token string">"intelliSenseMode"class="token operator">: class="token string">"gcc-x64"class="token punctuation">}class="token punctuation">]class="token punctuation">,class="token string">"version"class="token operator">: class="token number">4
class="token punctuation">}
code>
  • <code>compilerPathcode>:指定 C 编译器的路径(如 <code>gcccode>)。
  • <code>includePathcode>:头文件的查找路径࿰c;VSCode 会根据这些路径为你提供代码补全。
  • <code>intelliSenseModecode>:控制智能提示和代码解析器的行为࿰c;通常与编译器保持一致。

chjson_38">2. <code>launch.jsoncode>

<code>launch.jsoncode> 是调试配置文件࿰c;用于控制如何启动和调试 C/C++ 程序。它配置了调试器的运行环境࿰c;包括执行程序的路径、调试参数、调试类型等。

常见的配置项:
  • <code>programcode>:要调试的可执行文件路径。
  • <code>argscode>:传递给程序的命令行参数。
  • <code>cwdcode>:运行调试时的工作目录。
  • <code>stopAtEntrycode>:是否在程序入口点(如 <code>maincode> 函数)处停住࿰c;等待用户操作。
  • <code>miDebuggerPathcode>:调试器的路径࿰c;通常是 <code>gdbcode>。
chjson_48">示例 <code>launch.jsoncode>:
<code class="prism language-json">class="token punctuation">{class="token string">"version"class="token operator">: class="token string">"0.2.0"class="token punctuation">,class="token string">"configurations"class="token operator">: class="token punctuation">[class="token punctuation">{class="token string">"name"class="token operator">: class="token string">"(gdb) Launch"class="token punctuation">,class="token string">"type"class="token operator">: class="token string">"cppdbg"class="token punctuation">,class="token string">"request"class="token operator">: class="token string">"launch"class="token punctuation">,class="token string">"program"class="token operator">: class="token string">"${workspaceFolder}/a.exe"class="token punctuation">,class="token string">"args"class="token operator">: class="token punctuation">[class="token punctuation">]class="token punctuation">,class="token string">"stopAtEntry"class="token operator">: class="token boolean">falseclass="token punctuation">,class="token string">"cwd"class="token operator">: class="token string">"${workspaceFolder}"class="token punctuation">,class="token string">"environment"class="token operator">: class="token punctuation">[class="token punctuation">]class="token punctuation">,class="token string">"externalConsole"class="token operator">: class="token boolean">trueclass="token punctuation">,class="token string">"MIMode"class="token operator">: class="token string">"gdb"class="token punctuation">,class="token string">"miDebuggerPath"class="token operator">: class="token string">"C:/Program Files/MinGW/bin/gdb.exe"class="token punctuation">,class="token string">"setupCommands"class="token operator">: class="token punctuation">[class="token punctuation">{class="token string">"description"class="token operator">: class="token string">"Enable pretty-printing for gdb"class="token punctuation">,class="token string">"text"class="token operator">: class="token string">"-enable-pretty-printing"class="token punctuation">,class="token string">"ignoreFailures"class="token operator">: class="token boolean">trueclass="token punctuation">}class="token punctuation">]class="token punctuation">,class="token string">"preLaunchTask"class="token operator">: class="token string">"build"class="token punctuation">,class="token string">"internalConsoleOptions"class="token operator">: class="token string">"openOnSessionStart"class="token punctuation">}class="token punctuation">]
class="token punctuation">}
code>
  • <code>programcode>:调试时要运行的可执行文件路径࿰c;例如 <code>a.execode>。
  • <code>miDebuggerPathcode>:GDB 调试器的路径。
  • <code>stopAtEntrycode>:是否在程序入口处暂停。
  • <code>preLaunchTaskcode>:调试前需要先运行的任务࿰c;比如自动编译。

3. <code>tasks.jsoncode>

<code>tasks.jsoncode> 文件用于配置编译任务。它告诉 VSCode 如何编译 C/C++ 代码。通过这个文件࿰c;你可以配置各种自动化任务࿰c;比如编译、清理项目等。

常见的配置项:
  • <code>labelcode>:任务的名称࿰c;用于在其他文件中引用(如 <code>launch.jsoncode> 中的 <code>preLaunchTaskcode>)。
  • <code>commandcode>:执行的命令࿰c;例如 <code>gcccode>。
  • <code>argscode>:传递给命令的参数࿰c;例如编译选项和源文件。
  • <code>groupcode>:任务的类型࿰c;可以是 <code>buildcode> 或 <code>testcode>。
  • <code>problemMatchercode>:用于匹配编译器输出中的错误信息࿰c;以便在 VSCode 中高亮错误。
示例 <code>tasks.jsoncode>:
<code class="prism language-json">class="token punctuation">{class="token string">"version"class="token operator">: class="token string">"2.0.0"class="token punctuation">,class="token string">"tasks"class="token operator">: class="token punctuation">[class="token punctuation">{class="token string">"label"class="token operator">: class="token string">"build"class="token punctuation">,class="token string">"type"class="token operator">: class="token string">"shell"class="token punctuation">,class="token string">"command"class="token operator">: class="token string">"gcc"class="token punctuation">,class="token string">"args"class="token operator">: class="token punctuation">[class="token string">"hello.c"class="token punctuation">,class="token string">"-o"class="token punctuation">,class="token string">"hello.exe"class="token punctuation">]class="token punctuation">,class="token string">"group"class="token operator">: class="token punctuation">{class="token string">"kind"class="token operator">: class="token string">"build"class="token punctuation">,class="token string">"isDefault"class="token operator">: class="token boolean">trueclass="token punctuation">}class="token punctuation">,class="token string">"problemMatcher"class="token operator">: class="token punctuation">[class="token string">"$gcc"class="token punctuation">]class="token punctuation">}class="token punctuation">]
class="token punctuation">}
code>
  • <code>commandcode>:编译命令࿰c;这里是 <code>gcccode>。
  • <code>argscode>:编译的参数࿰c;<code>hello.ccode> 是源文件࿰c;<code>-o hello.execode> 是输出的可执行文件。
  • <code>groupcode>:标记为构建任务。
  • <code>problemMatchercode>:用来解析编译输出࿰c;自动标记出编译错误。

三个文件的关系:

  • <code>c_cpp_properties.jsoncode>:用于代码智能提示、头文件路径和编译器设置。
  • <code>launch.jsoncode>:用于配置调试参数࿰c;控制如何调试程序。
  • <code>tasks.jsoncode>:用于定义任务࿰c;比如编译 C 文件࿰c;可以通过编译任务生成可执行文件。

配置 C/C++ 开发环境:

  • 需要在 <code>tasks.jsoncode> 中配置好编译任务࿰c;确保可以使用 <code>gcccode> 编译项目。
  • 然后在 <code>launch.jsoncode> 中配置调试࿰c;指定程序的路径和调试器的路径。
  • 最后࿰c;<code>c_cpp_properties.jsoncode> 可以帮助你设置头文件路径和智能提示࿰c;确保代码补全功能正常。

总结:

  • <code>c_cpp_properties.jsoncode> 用于代码智能提示的配置。
  • <code>launch.jsoncode> 用于调试的配置。
  • <code>tasks.jsoncode> 用于定义编译任务。

class="tags" href="/VSCODE.html" title=vscode>vscode没下载可以借鉴此佬~VSCODE的配置


http://www.ppmy.cn/ops/126958.html

相关文章

在Debian and Ubuntu上安装pgRouting

1、查看系统类型 lsb_release -cs2、追加资源库列表 sudo sh -c echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list3、导入资源库的KEY&#xff0c;更新库列表 sudo apt install wget c…

「4.4」祖孙询问

「4.4」祖孙询问 题目描述 已知一棵 n 个节点的有根树。有 m 个询问&#xff0c;每个询问给出了一对节点的编号 x 和 y&#xff0c;询问 x 与 y 的祖孙关系。 输入格式 输入第一行包括一个整数 n 表示节点个数&#xff1b; 接下来 n 行每行一对整数对 a 和 b 表示 a 和 b 之…

TCP 全连接队列与 tcpdump 抓包

TCP 相关实验 理解 listen 的第二个参数 基于刚才封装的 TcpSocket 实现以下测试代码对于服务器, listen 的第二个参数设置为 1, 并且不调用 accept test_server.cc C #include "tcp_socket.hpp" int main(int argc, char* argv[]) {if (argc ! 3) {printf("…

在线绘图工具drawio,visio的平替

Draw.io&#xff1a;灵活高效的在线绘图工具推荐 在工作和项目管理中&#xff0c;流程图、架构图和思维导图等可视化图表是非常重要的沟通工具。Draw.io&#xff08;现更名为diagrams.net&#xff09;是一个强大且免费的在线绘图工具&#xff0c;适用于创建各种类型的图表。它功…

Debug-029-el-table实现自动滚动分批请求数据

前情提要 最近做了一个小优化&#xff0c;还是关于展示大屏方面的。大屏中使用el-table展示列表数据&#xff0c;最初的方案是将数据全部返回&#xff0c;确实随着数据变多有性能问题&#xff0c;有时请求时间比较长。这里做的优化就是实现列表的滚动到距离底部一定高度时再次请…

如何使用Websocket订阅实时股票价格

WebSocket和HTTP请求在工作原理和使用场景上存在显著区别。首先&#xff0c;HTTP是一种无状态的协议&#xff0c;客户端发起请求&#xff0c;服务器响应后&#xff0c;连接通常会关闭。如果客户端需要再次获取数据&#xff0c;必须发起新的请求。这种"请求-响应"模型…

【火山引擎】 Chat实践 | 大模型调用实践 | python

目录 一 前期工作 二 Doubao-pro-4k_test实践 一 前期工作 1 已在火山方舟控制台在线推理页面创建了推理接入点 ,接入大语言模型并获取接入点 ID。 2 已参考安装与初始化中的步骤完成 SDK 安装和访问凭证配置

vue综合指南(一)

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vuet篇专栏内容:Vue-综合指南 目录 1、你知道Vue响应式数据原理吗&#xff1f;Proxy 与 Object.defineProperty 优…