launch.json / tasks.json / c_cpp_properties.json 解析 配置文件 C++ VSCode

在使用VS Code进行C/C++的开发过程中,有三个至关重要的配置文件,分别是 tasks.json, launch.json  c_cpp_properties.json

1. tasks.json

tasks.json 是在 vscode 中辅助程序编译的模块,可以代你执行类似于在命令行输入 gcc hello.c -o hello” 命令的操作,你只要在图形界面下操作即可生成可执行文件。

当你在项目文件夹下打开 vscode 后:

1) 选择“终端”;  2) 选择“配置任务”;  3) 选择你想使用的编译器(这里本人选择 gcc);

即可生成默认的 tasks.json 文件。

可以看到在文件夹下生成了名为 .vscode 的文件,tasks.json 就放在其中。

⭐其中比较重要的几个变量:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",        //任务类型(如果是shell,下面的command就相当于执行shell命令)
            "label": "环境配置测试",     //任务的名称,可以修改,但一定要和launch中的"preLaunchTask"项保持一致
            "command": "/usr/bin/gcc", //编译器(可执行文件)的路径
            "args": [                  //(常用)编译时使用的参数,和命令行下相同
                "-g",
                "${fileDirname}/hello.c",
                "-o",
                "${fileDirname}/hello"
            ],
            //上述内容相当于在命令行下输入了: gcc hello.c -o hello
            "options": {
                "cwd": "/usr/bin"     //编译器的目录
            },
            "problemMatcher": [
                "$gcc"                //使用gcc捕捉错误
            ],
            "group": "build",
            "detail": "compiler: /usr/bin/gcc"      //一些描述性信息
        }
    ]
}

 也可以参考 Integrate with External Tools via Tasks 官方文档 文档进一步了解

 

2. launch.json

launch.json 是用于运行 ( run ) 和调试 ( debug ) 的配置文件,可以指定语言环境,指定调试类型等等内容。

打开 VS Code 后,按照下图所示的提示,从左向右依次点击(也可以在上方菜单栏依次选择 :1) “运行”;2) “打开配置”;3) 选择 " C++ (GDB/LLDB) " 即可生成 launch.json),创建 launch.json 文件

生成的 launch.json 也放在 .vscode 文件夹中

⭐其中各种变量的内容及涵义如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "运行和调试",         //运行和调试任务的名称,可自定义
            "type": "cppdbg",            //配置类型,默认即可
            "request": "launch",         //launch模式允许我们打断点进行调试,默认即可
            "program": "${fileDirname}/hello", //(常用)程序目录,这里相当于在命令行执行"hello"
            "args": [],                  //(常用)程序(main函数)的入口参数
            "stopAtEntry": false,       //在入口处暂停,选true相当于在入口处增加断点
            "cwd": "${workspaceFolder}",//当前的文件目录
            "environment": [],          //添加到程序的环境变量
            "externalConsole": false,   //外部控制台,true在调试时会开启系统控制台窗口,false会使用vscode自带的调试控制台
            "MIMode": "gdb",            //使用gdb进行调试
            "setupCommands": [           //用来设置gdb的参数,默认即可
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "环境配置测试",    //(常用)运行和调试前要执行的task(编译)任务,任务名要和task.json里的"label"对应
            "miDebuggerPath": "/usr/bin/gdb"  //debug调试工具的路径,这里使用gdb所在的路径
        }
    ]
}

也可以参考 Configuring C/C++ debugging官方文档  Debugging in VS Code官方文档 进行设置

 

3. c_cpp_properties.json

c_cpp_properties.json 主要用来设置包含头文件的路径,设置 C/C++ 支持的版本号等等。

1) 点击 Ctrl + Shift +P  弹出命令搜索框;2) 选择  C/C++: 编辑配置 (UI)  即可生成 c_cpp_properties.json 文件,此文件同样包含在.vscode文件夹中。

⭐其中主要的变量名称和涵义如下:

复制代码
{
    "configurations": [
        {
            "name": "Linux",        //配置名称,默认为系统名,可以自行更改
            "includePath": [        //(常用)运行项目包含.h头文件的目录,
                "${workspaceFolder}/**"//此处会匹配工作文件下的所有文件
            ],                      //添加"compilerPath"后,系统include路径可不写明
            "defines": [],        //(常用)定义一些需要的变量,等价于在编译时写"-D变量" 
            "compilerPath": "/usr/bin/gcc",     //编译器的路径
            "cStandard": "gnu17",               //C标准的版本
            "cppStandard": "gnu++14",           //C++标准的版本
            "intelliSenseMode": "gcc-x64"       //IntelliSense的一些配置,默认即可
        }
    ],
    "version": 4
}
复制代码

也可参考 c_cpp_properties.json 官方文档 设置更多内容。

 

在上述三个配置文件中,我们会看到类似于  ${workspaceFolder}  等等类似的描述,这些描述是 VS Code 预定义变量名,可以用来代指工作目录的路径,环境变量的名称,生成文件的名称等等。使用这些预定义的变量名可以使得我们的开发过程更加高效,同时可移植性也大大增强。更多内容可以参照官方文档 Variables Reference

⭐一般我们比较常见的变量名有:
${workspaceFolder} - VS Code当前打开工作区文件夹的路径
${file} - 当前打开文件的绝对路径
${fileBasename} - 当前打开文件的名称
${fileBasenameNoExtension} - 当前打开文件的名称,但是不加后缀名
${fileDirname} - 文件所在的文件夹路径

 

欢迎各位指正和补充!

posted @ 2020-12-29 17:39  HarryPotterIsDead!  阅读(11671)  评论(0编辑  收藏  举报