将vscode打造无敌的IDE(14) tasks.json和launch.json配置详解,随心所欲添加自动化任务

vscode是一个轻量级的文本编辑器,但是它的扩展插件可以让他拓展成功能齐全的IDE,这其中就靠的是tasks.json和launch.json的配置。这两个文件需要存放在当前工程的.vscode目录下。

vscode预定义了一些变量供我们在json文件使用:

预定义变量

变量名含义
${workspaceRoot}当前打开的文件夹的绝对路径+文件夹的名字
${workspaceRootFolderName}当前打开的文件夹的名字
${file}当前打开正在编辑的文件名,包括绝对路径,文件名,文件后缀名
${relativeFile}从当前打开的文件夹到当前打开的文件的路径如 当前打开的是test文件夹,当前的打开的是main.c,并有test/first/second/main.c那么此变量代表的是 first / second / main.c
${fileBasename}当前打开的文件名+后缀名,不包括路径
${fileBasenameNoExtension}当前打开的文件的文件名,不包括路径和后缀名
${fileDirname}当前打开的文件所在的绝对路径,不包括文件名
${fileExtname}当前打开的文件的后缀名
${cwd}任务开始运行时的当前工作目录
${lineNumber}当前打开的文件,光标所在的行数

关于变量的更多信息见:https://code.visualstudio.com/docs/editor/variables-reference

tasks.json文件范例

{
    // https://code.visualstudio.com/docs/editor/tasks
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",  // 任务的名字叫Build,注意是大小写区分的,等会在launch中调用这个名字,这个名字也会在task列表中显示
             "detail": "build project", // 描述信息,也会在task列表显示,在label的下面
            "type": "shell",  // 会在shell中执行命令,还可以是process,表示命令作为一个进程运行
            "command": "g++", // 命令是g++,这里也可以是一个shell脚本
            "args": [
                "'-Wall'",
                "'-std=c++17'",  //使用c++17标准编译
                "'${file}'", //当前文件名
                "-o", //对象名,不进行编译优化
                "'${fileBasenameNoExtension}'",  //当前文件名(去掉扩展名)
            ],
          // 所以以上部分,就是在shell中执行(假设文件名为filename.cpp)
          // g++ filename.cpp -o filename
            "group": { 
                "kind": "build", // 指定组名,相当于将该任务添加到build组
                "isDefault": true   
                // 任务分组,因为是tasks而不是task,意味着可以连着执行很多任务
                // 在build组的任务们,可以通过在Command Palette(F1) 输入run build task来运行
                // 当然,如果任务分组是test,你就可以用run test task来运行 
            },
            "problemMatcher": [
                "$gcc" // 使用gcc捕获错误
            ],
            // 如果没有依赖,以下可以不写
            "dependsOrder": "sequence", // 按列出的顺序执行任务依赖项
            "dependsOn":[
               // "xx1",              // 填写其他任务的label
              //  "xx2"
            ]
        }
    ]
}

tasks是个数组,里面可以填写多个task,task通过label进行标识,也就是task的名字。

按下ctrl +p , 再输入task空格,就可以看到刚刚添加的task: build。

launch.json

{
    "version": "0.2.0",
    "configurations": [{
        "name": "C++ Launch (GDB)", // 配置名称,将会在启动配置的下拉菜单中显示
        "type": "cppdbg", // 配置类型,是vscode官方推出的不同语法插件定义的,对于C/C++只能是cppdbg
        "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
        "targetArchitecture": "x86", // 生成目标架构,一般为x86或x64,可以为x86, arm, arm64, mips, x64, amd64, x86_64
        "program": "${file}", // 将要进行调试的程序的路径
        "MIMode": "gdb",    // 指定调试类型,
        "miDebuggerPath": "/usr/bin/gdb", // miDebugger的路径
        "miDebuggerArgs": "", //传递给gdb的参数
        "args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
        "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
        "cwd": "${fileDirname}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录
        "externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
        "preLaunchTask": "build",   // 调试会话开始前执行的任务,一般为编译程序,这个任务需要在tasks.json文件里定义
    }]
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值