关于VSCode的三个配置文件

news2024/12/26 11:18:19

关于VSCode的三个配置文件

若要使用VSCode来开发C++程序,则应该了解以下三种配置文件,分别为:

  • tasks.json:编译器相关的配置文件。比如,设置编译指令。

    注:对于复杂的编译任务(涉及多个源文件的编译),不如直接编写Makefile文件来的方便。

  • launch.json:调试器相关的配置文件。比如,调试器的路径、编译生成的可执行文件路径。

    注:若源文件需要调试,编译生成可执行文件时必须加上-g选项,否则断点无法生效。

  • c_cpp_properties.json:编译器路径和智能代码提示相关的配置文件。

1.tasks.json

1.1.创建方式

菜单栏选择 " Terminal/Configure Tasks"。

在这里插入图片描述

1.2.配置文件

若要支持C++高版本的编译,比如C++17,可以在参数列表args中添加一行-std=c++17。当然,前提是编译器支持。

注:若编译器支持C++17,且在参数列表args中添加一行-std=c++17,然后打印__cplusplus,结果就会变成201703

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",  // 必须与launch.json中的"preLaunchTask"一致
            "type": "shell",   // 可以选择shell或者process
            "command": "g++",  // 运行的命令
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/build/${fileBasenameNoExtension}.exe"
            ],
            // 将该task添加到build组,可以使用Ctrl+Shift+B快捷键来找到编译命令,命令名称就是"label"
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

可以观察tasks.json中的commandargs这两项,翻译过来其实就是如下指令:

g++ -g ${file} -o ${fileDirname}/build/${fileBasenameNoExtension}.exe

以上指令中,${file}等都是VScode设置的变量,可以参考官方文档或这里。这里简单介绍一下这些变量的含义:

  • ${file}:当前正在编辑的文件名,包括绝对路径、文件名以及后缀;
  • ${fileDirname}:当前打开的文件所在的绝对路径,不包括文件名;
  • ${fileBasenameNoExtension}:当前打开的文件的文件名,不包括路径和后缀名。

比如,当前打开的文件路径为D:/test/hello.cpp,那么这三个变量分别为

  • ${file}D:/test/hello.cpp
  • ${fileDirname}D:/test
  • ${fileBasenameNoExtension}hello

2.launch.json

2.1.创建方式

创建方式如下图所示。

在这里插入图片描述

在这里插入图片描述

选择GDB作为调试器,然后就会生成一个配置为空的launch.json的文件。在"configurations"中输入gdb可以自动生成默认配置。一般,修改默认配置中的"program"和"miDebuggerPath"即可完成绝大部分的设置。

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": []
}

2.2.配置文件

该配置文件中主要需要配置如下选项:

  • “program”:可执行文件的路径
  • “miDebuggerPath”:调试器的路径

在configurations中输入gdb可以自动生成默认配置。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\Software\\TDM-GCC-64\\bin\\gdb64.exe",  // 调试器路径
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description":  "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
        }
        
    ]
}

3.c_cpp_properties.json

3.1.创建方式

可以使用快捷键Ctrl+Shift+P,输入C/C++:Edit Configuration。

3.2.配置文件

该配置文件中主要需要配置如下选项:

  • “includePath”:指定了头文件的搜索路径。"/usr/local/include"是我手动添加的路径,里面存放了boost库的头文件。只有正常添加了搜索路径,Vscode才能正确找到它们。
  • “compilerPath”:这个是编译器的路径。
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/local/include"			// boost头文件
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}
cc",
            "cStandard": "c11",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

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

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

相关文章

《Linux运维总结:Centos7.6部署redis6.2.8哨兵集群》

一、部署redis服务 1.1、环境信息 环境信息如下: 主机IP操作系统Redis版本CPU架构端口角色192.168.1.191Centos7.66.2.8x86_647001master192.168.1.192Centos7.66.2.8x86_647002slave192.168.1.193Centos7.66.2.8x86_647003slave192.168.1.191Centos7.66.2.8x86_6…

【嵌入式·单片机】老生常谈:学习单片机和嵌入式是否需要学习算法?

文章目录前言什么是算法嵌入式是否需要算法如何学习算法参考资料前言 刚学习单片机或嵌入式的同学可能会听说过「算法」这个词,部分电子信息类专业的同学也会在自己的培养计划上看到《数据结构与算法》这门课程,这个时候我们可能会感到疑惑,…

九、Java 16 新特性

九、Java 16 新特性 JDK 16 在 2021 年 3 月 16 号发布!根据发布的规划,这次发布的 JDK 17 是一个长期维护的版本(LTS)。Java 16 提供了数千个性能、稳定性和安全性更新,以及 17 个 JEP(JDK 增强提案)&…

特征工程资料整理,如何从数据中挖掘特征

特征工程资料整理,如何从数据中挖掘特征一、特征工程是什么二、探索性数据分析EDA参考资料:1. pandas_profiling【推荐】2. Sweetviz3. pandasgui4.D-tale【推荐】结论三、特征处理参考资料:1. 数值特征⭐️⭐️⭐️⭐️⭐️数值特征小结&…

用于高精度干涉仪的奇特量子效应

使用物质波放大、跟踪加速度,以前从未以便携式形式实现。(图片来源:网络) 来自法国的一组研究人员开发了第一个三向混合量子惯性传感器,它可以在不使用卫星信号的情况下测量加速度。这个突破性设备的核心是“物质波干涉…

传统目标跟踪——MeanShift算法

目录 一、均值漂移(MeanShift) 二、流程 三、代码 3.1 meanshift+固定框的代码 3.2 优化:meanshift鼠标选择 3.3 meanshift自己实现函数 四、补充知识 4.1 直方图 4.2 归一化 4.3 直方图反投影 一、均值漂移(…

Maven 教程

Maven 教程 Maven 翻译为"专家"、“内行”,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。 Maven 是一…

手把手教你阿里云服务器的购买及环境搭建

1.服务器相关 程序员都需要一个自己的服务器! 用于发布自己的网站和项目!用于操作系统的练习!将自己的远程仓库、远程数据库、远程tomcat… 搭建在服务器上!用于Linux进行任意的环境部署操作! 服务器如何购买 若果你没超过24岁&am…

【Bp2Lua】多返回值和Out参数说明

【Bp2Lua】多返回值和Out参数说明 这块比较繁琐,有四部分需要了解: U蓝图LuaUnLua 最后再解释 Bp2Lua 如何处理,以及后续潜在的风险 Bp2Lua 如何处理 先说结论 统一当作多返回值返回特殊处理了 out参数 不在参数列表最后的情况&#xf…

分布式理论之分布式锁

写在前面 在分布式理论之分布式互斥 一文中我们分析了分布式环境中的分布式互斥问题,其中解决该问题有如下的三种方案: 1:集中式算法 2:分布式算法 3:令牌环算法而本文要分析的分布式锁,就是其中的算法1,…

折腾了我一周,原来Netty网络编程就是这么个破玩意儿!!!

1、阻塞 阻塞模式下,相关方法都会导致线程暂停 ServerSocketChannel.accept 会在没有连接建立时让线程暂停SocketChannel.read 会在通道中没有数据可读时让线程暂停阻塞的表现其实就是线程暂停了,暂停期间不会占用 cpu,但线程相当于闲置 单线…

flowable学习笔记(四):动态多实例

1.定义流程模板 【测试用户任务多实例】任务节点配置了以下属性: 集合(多实例):userList。这个创建流程实例时入参需要加上这个参数。 元素变量(多实例):user。工作流创建多实例时会将集合(多实例)的值拆分成元素变量(多实例),这个…

Git复习,GitHub\Gitee的使用,IDEA集成Git

今天想把自己的课设上传到GitHub,因为长久不用,Git的命令忘得差不多了,所以今天把Git重新学一遍。 文章目录Git的介绍Git的安装Git的常用命令工作机制常用命令用户签名初始化本地库查看本地库状态添加暂存区提交本地库查看引用日志信息修改文…

Python常用函数笔记汇总2

1.分组汇总groupby 2.计算空值 # py计算空值 data.isnull().sum(axis0) data.notnull().sum(axis0)# py去重计数 data_op[id_num_op].value_counts().size data_op[id_num_op].size3.保留两位小数 # predict_proba保留两位小数 gnb GaussianNB() pre gnb.fit(X_train,y_tr…

pytest-日志配置

如果想要在run测试用例时,打印出由python的logging的日志,可以在pytest中进行相应的配置 pytest可以将日志输出到控制台或者文件中,分别对应不同的配置项 pytest的日志配置文件主要在pytest.ini文件中进行配置,包括配置日志的格式…

ARM64内存虚拟化分析(5)内存布局更新

1 添加MR 创建的MR需要通过函数memory_region_add_subregion()添加到系统中,提交MR,并最终往KVM提交内存的变化。 过程如下: 将mr设置为subregion的container;设置subregion在虚拟机中的物理地址;调用memory_region_t…

FOHEART H1数据手套_Unity3D SDK开发

本教程介绍使用FOHEART H1数据手套在Unity3D中,显示每段骨骼的位置与旋转信息。 需要准备的软硬件: 1、FOHEART H1数据手套 2、MotionVenus客户端 3、Unity3D软件 4、开发包MotionVenus_U3DPlugin_v2.0_H1GloveDev_SDKTest.unitypackage 1、连接数…

HFSS学习笔记

以下所有操作,都是基于2022版本的HFSS。一、HFSS solution模式选择位置:HFSS-Solution type类型表格。二、单位设置位置:Modeler-Units点击后,通常选用单位为:mm三、绘制物体点击红圈1的draw,右侧有些形状可…

MCU-51:单片机实时时钟

目录一、什么是时钟1.1 实时时钟1.2 时序二、DS1302实时时钟2.1 DS1302介绍2.2 引脚定义和应用电路三、代码演示3.1 数字时钟3.2 DS1302可调时钟注意:一定要看一、什么是时钟 1.1 实时时钟 real time clock,真实时间,就是所谓的xx年x月x日x…

我的统计学学习笔记(持续更新)

目录数据:变量和观测统计学描述统计数据的收集数据的可视化数据的规律性特征统计推断参数估计假设检验贝叶斯统计基础知识:概率论数据:变量和观测 变量(column)、观测(row)、测量(assign number to observation)。 统计学 描述统计 数据…