我在 Windows 上使用带有 VSCode 的 msys2 编译器,并希望能够在 MingW64、UCRT64 和 Clang64 编译器之间轻松切换。 根据MSys2网站的默认设置是将msys2基础bin目录以及各自环境的bin目录添加到路径中:
C:\msys64\ucrt64\bin
C:\msys64\ucrt64\bin
这有几个作用: 不错的是,您可以在任何地方使用
C:\msys64\usr\bin
的标准 gnu 工具,例如 less
命令。
不好的是您必须更改路径以更改编译器,但这不会传递到正在运行的 VSCode 环境,因此您必须先退出并重新启动。
现在我可以在 launch.json 文件或 VSCode 内部终端的配置中设置环境变量。
但是,只在 Windows 路径中添加一个小条目是非常不方便的。
现在我看到以下内容:
"MIMODE"
和"miDebuggerPath"
MSYSTEM
和 MSYSTEM_Prefix
(以及其他一些),它们未在 Windows cmd 提示符中定义。
启动配置中这些变量的定义是否足以让 msys 找到所有内容?
那我就可以C:\msys64\ucrt64\bin
在默认路径中,这将使我能够访问标准 msys2 工具,但通过 launch.json 中的定义专门控制编译器选择。 唯一的缺点是不能在“普通”终端窗口中立即访问预定义的编译器——但这也是一个优点,因为我可以简单地通过批处理文件加载必要的环境变量,然后可以很容易地从编译器环境。
在 VSCode 的文档中说 https://code.visualstudio.com/docs/cpp/launch-json-reference#_environment 环境变量的配置必须如下所示:
[ { "name": "config", "value": "Debug" } ], not [ { "config": "Debug" } ]
所以我的 launch.json 部分看起来像这样:
}, "name": "(gdb) Launch current file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "C:/msys64/mingw64/bin",
"environment": [
{
"name": "MSYSTEM", "value": "MINGW64",
"name": "MSYSTEM_PREFIX", "value": "/mingw64"
}
],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe",
但是,VSCode 中的
Problems
窗口现在立即显示内容有四个错误
重复的对象键 jsonc(520) [lnxy, Col xy]`。
显然我不能像这样定义多个环境变量?
我完全可以按计划的方式设计我的编译器选择吗?
这是一个好方法吗?