VSCode使用MinGW中的go并支持CGO

本文介绍了如何在Windows环境下,特别是使用VSCode时,配置MinGW以解决Go语言的CGO问题,包括设置PATH环境变量和调整Go插件配置以确保正确编译和执行C/C++程序。

在Windows中,如果想使用Linux下的一些命令或者开发工具,可以安装Cygwin或者MinGW,MinGW相比Cygwin要轻量得多,笔者就安装的MinGW,但是安装MinGW后,如果把它加到Windows系统的PATH环境变量中,则可能会与Windows本身的安装的一些程序冲突。最好的办法是在使用的时候临时修改PATH环境变量。

本文就介绍一下如何在VSCode中使用MinGW中的Go。如果Go程序中使用了CGO,则使用Windows中直接安装的Go版本,会由于找不到C/C++编译器而编译失败。Go默认是使用GCC/G++来编译C/C++程序的,Windows中直接安装的版本由于找不到GCC/G++,是不会启用CGO的。要想使用CGO,最好使用MinGW中的Go。

假设MinGW是安装在G:/msys64/mingw64,Windows系统PATH中没有添加MinGW路径,要想在VSCode中使用MinGW中的程序,则需要在VSCode的settings.json中设置PATH环境变量:

"terminal.integrated.env.windows": {
    "PATH":"G:/msys64/mingw64/bin/;${env:PATH}"
  },

这样VSCode中启用的控制台就可以使用MinGW中的程序了。

但是VSCode中的Go插件,并不会使用它,需要另外在settings.json中设置

"go.goroot": "G:/msys64/mingw64/lib/go",
  "go.toolsEnvVars": {
    "PATH" : "G:/msys64/mingw64/bin/;${env:PATH}"
  },

${env:PATH}是为了使用系统中的PATH路径,这样在Go中使用exec.Command执行外部程序时,可以在系统路径中搜索。此设置需要vscode-go插件v0.40.0及以上版本,低版本不支持。

如果Go项目中需要根据条件编译不同的代码,比如使用了debug标签(tag),要想在在运行/调试时,使用相应的标签,需要在launch.json中进行配置buildFlags参数:

{
	// 使用 IntelliSense 了解相关属性。
	// 悬停以查看现有属性的描述。
	// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
	"version": "0.2.0",
	"configurations": [
		{
			"name": "本机",
			"type": "go",
			"request": "launch",
			"mode": "auto",
			"program": "${workspaceFolder}/app",
			"args": [
				"-console=true",
			],
			"output": "${workspaceFolder}/app/debug",
			"buildFlags": [
				"-tags=debug"
			]
		}
	]
}

VSCode是使用了gopls来处理Go文件,如果要启动不用的标签,也需要单独设置,settings.json中设置:

"gopls": {
		"build.buildFlags": ["-tags=debug"]
	},

这样就可以使用MinGW中的Go了,并且支持CGo和条件编译。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值