VSCode中task.json和launch.json的作用和配置教程
VSCode中task.json和launch.json的作用和配置教程
在使用VSCode进行开发时,task.json和launch.json是两个非常重要的配置文件。它们分别控制着构建和调试环节,对于开发者来说,理解这两个文件的作用和配置方法至关重要。本文将详细介绍这两个文件的基本概念、参数解释以及实际应用中的不同运行方式。
前言
由于VSCode并不是一个传统意义上的IDE,所以初学者在使用过程中可能会有很多疑惑,其中比较常见的一个问题就是:task.json和launch.json两个文件分别有什么作用以及如何配置。
task.json
VSCode官网提供的tasks.json配置教程。使用不同的编程语言可能有不同的开发流程,比如C/C++就需要编译(广义编译,包括了链接)、运行、测试、打包等等流程,而Python只需要运行即可。为了把各种语言的不同开发流程抽象成同一套流程,于是有了编码(Code)— 构建(build)— 运行/调试(run/debug)— 测试 (test) — 打包(package)等等,其中每个环节都可以认为是一个task,所以可以利用task.json来手动完成那些使用IDE时被隐藏的开发流程细节。
type参数
每个task都有一个type类型,VSCode为tasks.json提供了一些内置的类型支持,比如“npm”,但是其他语言的类型就需要通过插件来支持,用户自制的task一般使用“shell”或者“process”即可。
label参数
只是一个名称,没有特殊作用。
command参数
关键参数,表示传给shell的命令。
args参数
command后面所跟的参数。
launch.json
VSCode官网提供的launch.json的配置教程。为了调试程序,仅靠tasks.json还不够用户友好,如果需要在VSCode编辑器界面中调试代码,就需要配置launch.json,它和tasks.json一样,都是VSCode编辑器自带的内置功能,而不是某个插件提供的功能,但是插件提供了扩展,比如原生的VSCode仅支持JavaScript和TypeScript等极少几种语言的调试,但是安装了微软官方提供的C++插件后,就可以做到调试C++程序了。
6种运行程序的方式的区别和背后的原理
在使用VSCode编写C++程序时,直观感受是有三种让程序跑起来的方法:
方法1:在左侧导航栏中
点击Run and Debug即可开始执行launch.json中配置的调试(或者运行)任务。
方法2:按F5运行
本质上就是方法1的快捷键,没有区别,如果按ctrl + F5的话会以Run的方式启动运行,跳过断点(某些语言不支持直接运行的功能)。
方法3:点击右上角的按钮执行
本质上也是通过VSCode自带调试接口 + 插件提供的功能具体实现 + launch.json中的配置信息启动的调试,有趣的是,图中前两项在launch.json并不存在的时候也能正常启动运行,这是因为C++插件提供了一些对launch.json的简单实现,免去了对及其简单的程序再编写一次launch.json的麻烦,下面的三个选项都是我自己在launch.json中定义的运行任务。
方法4:通过tasks.json中的build任务进行构建,然后再在Terminal中手动启动
这种方法对应着快捷键ctril + shift + B,运行默认构建任务,然后再自己另起终端运行即可。
方法5:在Terminal中手动执行编译命令,再运行执行命令
此处省略
方法6:利用第三方构建工具(如cmake),然后启动
此处省略
总结
tasks.json和launch.json两个文件分别对应着VSCode对于不同的开发语言所抽象出来的各个共同的开发环节的细粒度控制,前者控制构建环节(其实理论上可以控制任何过程),后者控制运行和调试环节。而且我们很多日用而不自知的许多运行程序的操作背后,其实都是launch.json在以不同的形式和同样的原理在起作用。