转自:VScode tasks.json和launch.json的设置 - 知乎

目录

  1. C++(方法1:不使用VSCode插件,较繁琐)
  2. C++(方法2:使用Native Debug插件)
  3. C++(方法3:使用C/C++ Compile Run插件)
  4. Rust(使用Native Debug插件)
  5. Typescript(仅做参考,这是用来写vscode插件时的项目设置)
  6. 一些常用的预定义变量

在网上搜了几篇文章,都写的不是很详细,而且好多都过时了。尤其很多是task0.1.0的版本,vscode自动会屏蔽掉。

根据我的理解,tasks用于在launch前执行任务,launch用于读取执行文件。

这两者经常组合起来用于需要编译语言的自动编译+自动执行,下面以C++、Rust和Typescript为例。

一、 C++(方法1:不使用VSCode插件,较繁琐)

在当前文件是C++的情况下,tasks可以被用来做编译,而launch用来执行编译好的文件。

// tasks.json
{// https://code.visualstudio.com/docs/editor/tasks"version": "2.0.0","tasks": [{"label": "Build",  // 任务的名字叫Build,注意是大小写区分的,等会在launch中调用这个名字"type": "shell",  // 任务执行的是shell命令,也可以是"command": "g++", // 命令是g++"args": ["'-Wall'","'-std=c++17'",  //使用c++17标准编译"'${file}'", //当前文件名"-o", //对象名,不进行编译优化"'${fileBasenameNoExtension}.exe'",  //当前文件名(去掉扩展名)],// 所以以上部分,就是在shell中执行(假设文件名为filename.cpp)// g++ filename.cpp -o filename.exe"group": { "kind": "build","isDefault": true   // 任务分组,因为是tasks而不是task,意味着可以连着执行很多任务// 在build组的任务们,可以通过在Command Palette(F1) 输入run build task来运行// 当然,如果任务分组是test,你就可以用run test task来运行 },"problemMatcher": ["$gcc" // 使用gcc捕获错误],}]
}

下面是launch.json文件
里面主要是编译器的参数,可以使用ctrl+space来查看有哪些可用参数
也可以在configurations中存在鼠标光标的情况下,点击右下自动出现的Add Configurations按钮
为什么选gdb不选 windows?因为这个不会执行预任务,也就没法编译文件了
为什么选 launch不选attach,是因为attach用来给正在执行的文件用的,比如网页中的组件,而launch是执行新文件

// launch.json{"version": "0.2.0","configurations": [{"name": "(gdb) Launch", //这个应该是F1中出现的名字"preLaunchTask": "Build",  //在launch之前运行的任务名,这个名字一定要跟tasks.json中的任务名字大小写一致"type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}.exe", //需要运行的是当前打开文件的目录中,名字和当前文件相同,但扩展名为exe的程序"args": [],"stopAtEntry": false, // 选为true则会在打开控制台后停滞,暂时不执行程序"cwd": "${workspaceFolder}", // 当前工作路径:当前文件所在的工作空间"environment": [],"externalConsole": true,  // 是否使用外部控制台,选false的话,我的vscode会出现错误"MIMode": "gdb","miDebuggerPath": "c:/MinGW/bin/gdb.exe","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}]}]
}

二、C++(方法2:使用Native Debug插件)

VSCode里有一个Native Debug插件能大大简化上述配置,请点击下载。

点击下载Native Debug​marketplace.visualstudio.com/items?itemName=webfreak.debug正在上传…重新上传取消​

下载安装之后,我们再来试试。

使用Native Debug插件自动生成

三、C++(方法3:使用C/C++ Compile Run插件)

VSCode的这个插件更简单,但只能用于单文件。

C/C++ Compile Run​marketplace.visualstudio.com/items?itemName=danielpinto8zz6.c-cpp-compile-run正在上传…重新上传取消​

这下根本无需配置task.json和launch.json,保存后直接按F6自动编译运行,其他功能见插件下载页的how to use。

Native Debug插件和C/C++ Compile Run插件的对比:
前者更通用(可用于多种编译语言),后者更简单。

四、Rust(使用Native Debug插件)

适用于cargo new建立的项目。

具体操作

//tasks.json
{// See https://go.microsoft.com/fwlink/?LinkId=733558// for the documentation about the tasks.json format"version": "2.0.0","tasks": [{"label": "Build","type": "shell","command": "cargo build"}]
}
// launch.json
{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "Debug","type": "gdb",  // 使用Native Debug插件提供的gdb类型"request": "launch","target": "./target/debug/${workspaceFolderBasename}.exe", // 注意这里使用了第五部分讲到的配置变量"preLaunchTask": "Build","cwd": "${workspaceRoot}","valuesFormatting": "parseText"}]
}

五、Typescript(仅做参考,这是用来写vscode插件时的项目设置)

tasks.json

// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
{"version": "2.0.0","tasks": [{"type": "npm","script": "watch","problemMatcher": "$tsc-watch","isBackground": true,"presentation": {"reveal": "never"},"group": {"kind": "build","isDefault": true}}]
}

launch.json

{"version": "0.2.0","configurations": [{"name": "Run Extension","type": "extensionHost","request": "launch","runtimeExecutable": "${execPath}","args": ["--extensionDevelopmentPath=${workspaceFolder}"],"outFiles": ["${workspaceFolder}/out/**/*.js"],"preLaunchTask": "${defaultBuildTask}"},{"name": "Extension Tests","type": "extensionHost","request": "launch","runtimeExecutable": "${execPath}","args": ["--extensionDevelopmentPath=${workspaceFolder}","--extensionTestsPath=${workspaceFolder}/out/test/suite/index"],"outFiles": ["${workspaceFolder}/out/test/**/*.js"],"preLaunchTask": "${defaultBuildTask}"}]
}

六、一些常用的预定义变量

Visual Studio Code Variables Reference​code.visualstudio.com/docs/editor/variables-reference#_predefined-variables正在上传…重新上传取消​

预定义变量#

支持下面的预定义变量:

  • ${workspaceFolder} - 当前工作目录(根目录)
  • ${workspaceFolderBasename} - 当前文件的父目录
  • ${file} - 当前打开的文件名(完整路径)
  • ${relativeFile} - 当前根目录到当前打开文件的相对路径(包括文件名)
  • ${relativeFileDirname} - 当前根目录到当前打开文件的相对路径(不包括文件名)
  • ${fileBasename} - 当前打开的文件名(包括扩展名)
  • ${fileBasenameNoExtension} - 当前打开的文件名(不包括扩展名)
  • ${fileDirname} - 当前打开文件的目录
  • ${fileExtname} - 当前打开文件的扩展名
  • ${cwd} - 启动时task工作的目录
  • ${lineNumber} - 当前激活文件所选行
  • ${selectedText} - 当前激活文件中所选择的文本
  • ${execPath} - vscode执行文件所在的目录
  • ${defaultBuildTask} - 默认编译任务(build task)的名字

预定义变量示例:

假设你满足以下的条件

  1. 一个文件 /home/your-username/your-project/folder/file.ext 在你的编辑器中打开;
  2. 一个目录 /home/your-username/your-project 作为你的根目录.

下面的预定义变量则代表:

  • ${workspaceFolder} - /home/your-username/your-project
  • ${workspaceFolderBasename} - your-project
  • ${file} - /home/your-username/your-project/folder/file.ext
  • ${relativeFile} - folder/file.ext
  • ${relativeFileDirname} - folder
  • ${fileBasename} - file.ext
  • ${fileBasenameNoExtension} - file
  • ${fileDirname} - /home/your-username/your-project/folder
  • ${fileExtname} - .ext
  • ${lineNumber} - 光标所在行
  • ${selectedText} - 编辑器中所选择的文本
  • ${execPath} - Code.exe的位置

Tip: vscode的智能提示会在tasks.jsonlaunch.json 提示所有支持的预定义变量.

【转】VScode tasks.json和launch.json的设置相关推荐

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

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

  2. VsCode配置Python项目的setting.json和launch.json两个配置文件

    我们在VsCode中首次创建一个Python项目,一般情况下是不会有setting.json和launch.json两个配置文件,如下图所示: 那么这个时候我们可以通过点击下方的"运行和调使 ...

  3. VScode Debug 配置了launch.json却进不去断点,运行debug所有断点变灰

    问题描述: 使用vscode进行debug(初学),配置了launch.json,想要Debug一个简单的程序.g++编译了程序之后,开始debug,并没有进入断点,也是直接运行完程序结束.很离谱,我 ...

  4. Ubuntu下使用VSCode的launch.json及tasks.json编写

    目录 程序 调试 遇到的问题及解决方式 拓展 预定义变量# 预定义变量示例: tasks用于在launch前执行任务,launch用于读取执行文件. 这两者经常组合起来用于需要编译语言的自动编译+自动 ...

  5. VSCode的launch.json和task.json解读

    VSCode的launch.json和task.json解读 1. 精简要点 2. 实例 进阶版看这里 1. 精简要点 launch.json文件是VSCode启动程序的配置文件,着重关注以下几个参数 ...

  6. vscode launch.json和task.json配置(重要参数详解)

    背景 开始前先说一下搞这个的原因,最早的时候看不懂json,后面在工作中有大量接触json的缘故,看这个json其实也就是一个key-value对,因为之前自己的编译器总是debug不了,就很难受,花 ...

  7. vscode中调试swift,如何配置launch.json

    在 vscode 中调试 Swift 程序需要配置 launch.json 文件. 首先,在 vscode 中打开调试窗口(Ctrl+Shift+D). 然后,点击"创建一个新的 launc ...

  8. VS Code 配置调试参数、launch.json 配置文件属性、task.json 变量替换、自动保存并格式化、空格和制表符、函数调用关系、文件搜索和全局搜索、

    1. 生成配置参数 对于大多数的调试都需要在当前项目目录下创建一个 lanch.json 文件,位置是在当前项目目录下生成一个 .vscode 的隐藏文件夹,在里面放置一些配置内容,比如:settin ...

  9. Vetur can‘t find `tsconfig.json` or `jsconfig.json` in e:\决策测试

    打开vscode会出现 Vetur can't find `tsconfig.json` or `jsconfig.json` in e:\决策测试 警告 打开左下角设置按钮,在搜索框输入vetur. ...

最新文章

  1. 算法---------数组-----------两数相加
  2. 机器智能公司一览图 | 36氪
  3. SolverParameter
  4. SAP固定资产、管理会计模块习题-针对END-USER
  5. 电脑配置java编译报错_java 编译错误
  6. jmeter测试TCP服务器/模拟发送TCP请求
  7. leetcode933. 最近的请求次数
  8. python的遍历字典里的键然后放到一个列表里_Python列表和字典互相嵌套怎么办?看完让你没有疑惑...
  9. centos上安装和配置tomcat
  10. WebGraph++编译
  11. java 封装log4j_Java项目 切片实现log4j的终极封装
  12. 安徽省级办公室高级应用计算机二级,2019年9月安徽省计算机等级二级考试教程:二级MSOffice高级应用上机指导...
  13. 人人都是 DBA(IV)SQL Server 内存管理 (转)
  14. linux机器crt连接不上,SecureCRT连不上Linux主机了,求破
  15. 串口服务器gsd文件,PROFIBUS总线通信仪表GSD文件的选择
  16. 下载篇:程序员修炼之道+从小工到专家(高清、免费)
  17. Excel文本取首字母(包括繁体)VBA开发工具
  18. Android怎么设置快捷键,Android Studio的快捷键设置方法
  19. ISPRS2022/遥感:Cross-spatiotemporal LULC from VHR remote sensing images基于深度学习域适应的VHR遥感影像跨时空土地覆盖分类
  20. 养乐多老师2017版韩语发音教程学习笔记

热门文章

  1. 打破牢笼,展望更高层次的世界
  2. [SHOI2011]双倍回文 manacher
  3. 【接口时序】2、Verilog实现流水灯及与C语言的对比
  4. 面向对象三大特性: 封装
  5. JVM第五部分 高效并发
  6. ASP.NET MVC中的模型装配 封装方法 非常好用
  7. Excel VBA遍历文件
  8. The Ransom of Red Chief
  9. 使用Combres 库 ASP.NET 网站优化
  10. 浅析PetShop程序中的购物车和订单处理模块(Profile技术,异步MSMQ消息)