VSCode使用MinGW中的go并支持CGO
在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环境变量:
1"terminal.integrated.env.windows": {
2 "PATH":"G:/msys64/mingw64/bin/;${env:PATH}"
3 },
这样VSCode中启用的控制台就可以使用MinGW中的程序了。
但是VSCode中的Go插件,并不会使用它,需要另外在settings.json
中设置
1"go.goroot": "G:/msys64/mingw64/lib/go",
2 "go.toolsEnvVars": {
3 "PATH" : "G:/msys64/mingw64/bin/;${env:PATH}"
4 },
${env:PATH}
是为了使用系统中的PATH路径,这样在Go中使用exec.Command
执行外部程序时,可以在系统路径中搜索。此设置需要vscode-go
插件v0.40.0
及以上版本,低版本不支持。
如果Go项目中需要根据条件编译不同的代码,比如使用了debug标签(tag),要想在在运行/调试时,使用相应的标签,需要在launch.json
中进行配置buildFlags
参数:
1{
2 // 使用 IntelliSense 了解相关属性。
3 // 悬停以查看现有属性的描述。
4 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
5 "version": "0.2.0",
6 "configurations": [
7 {
8 "name": "本机",
9 "type": "go",
10 "request": "launch",
11 "mode": "auto",
12 "program": "${workspaceFolder}/app",
13 "args": [
14 "-console=true",
15 ],
16 "output": "${workspaceFolder}/app/debug",
17 "buildFlags": [
18 "-tags=debug"
19 ]
20 }
21 ]
22}
VSCode是使用了gopls
来处理Go文件,如果要启动不用的标签,也需要单独设置,settings.json
中设置:
1"gopls": {
2 "build.buildFlags": ["-tags=debug"]
3 },
这样就可以使用MinGW中的Go了,并且支持CGo和条件编译。
- 原文作者:Witton
- 原文链接:https://wittonbell.github.io/posts/2023/2023-11-05-VSCode使用MinGW中的go并支持CGO/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。