VSCode利用tasks.json实现交叉编译

2024-11-18阅读数:136
上一篇:C01 - Python爬虫练习通关提示
下一篇:Python爬虫实战N07随机CSS样式类名,无Element ID图文教程

平时写代码使用VSCode居多,写Python以及前端代码时基本不用过多地配置即可开始编写代码、运行,也算是开箱即用的程度。但涉及到Golang这样需要编译调试的开发语言就需要进行一些配置了,尤其是需要跨平台运行时就要用到交叉编译。

先科普一下交叉编译的概念:交叉编译是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。

开发环境使用Windows以及macOS居多,但编译出来的程序往往是在Linux上运行,如果直接在服务器上进行编译就比较麻烦,所以就需要用到交叉编译。

交叉编译也可以用命令行进行,但每次都复制粘贴命令进行编译也麻烦,还容易出错。VSCode这款优秀的编辑器就提供了把命令固定下来的功能:tasks.json。

网上与VSCode运行调试、编译相关的文章基本都会提到launch.json和tasks.json,有些人往往搞不清两者的区别,可以简单理解为:launch.json是运行调试的配置,tasks.json是构建编译配置。

tasks.json 为 launch.json 提供支持: preLaunchTask 属性: 在 launch.json 中,可以通过 preLaunchTask 属性指定一个tasks.json 中定义的任务,这样在启动调试之前,VS Code 会先执行这个任务。

tasks.json交叉编译golang程序示例:

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "go",
			"label": "spiderbuf_linux",//出现在命令运行框的标题,随意起
			"command": "build",
			"args": [
                "-o",
                "${workspaceFolder}/bin/spiderbuf",//构建出来的二进制文件路径
			],
			"options": {
				"env": {
					"GOOS": "linux",//指定最终要运行的操作系统类型
					"GOARCH": "amd64"//指定最终要运行的CPU架构,通常为amd64\arm64
				}
			},
			"problemMatcher": [
				"$go"
			],
			"group": "build",
			"detail": "build linux amd64 version"//出现在命令运行框架的描述,随意写
		}
	]
}

以上的配置就是构建一个适合linux x86环境的二进制文件,tasks是一个数组,可以有多组配置,配置之间用英文逗号分隔。

执行task.json

在vscode界面按快捷键ctrl + shift + p(macOS快捷键为:command + shift + p),然后输入task查找Tasks执行命令,找到Tasks: Run Build Task,然后回车确认。

Tasks: Run Build Task

接下来就会出来我们配置中的任务,对应label和detail,根据这两个内容判断当前要执行的编译任务(如:要编译amd64还是arm64),然后选中并回车。此时vscode就会调用go命令进行编译,并在args指定的路径生成最终的二进制文件。

我配置了两个不同的CPU架构的编译任务,所以我的截图中会有两个内容:

build linux amd64 version

值得一提的是,如果不是交叉编译,即只需要编译出当前开发环境能运行的二进制文件时,tasks.json中options的内容可以省略。