因此,我有一个项目文件夹c:\myproject\
:
\.vscode\
\src\
\include\
我有时会在Windows下打开VSCode,以便通过Windows-Linux子系统(WSL)在Windows机器上进行此项目的工作(通过g++
和make
进行构建和启动),有时在Windows下本身(通过ClCompile.exe
和MSBuild.exe
在此计算机上构建和启动),或者在另一台纯Linux计算机上。
要处理这些不同的情况,我有一个launch.json
,其外观如下:
"version": "0.2.0",
"configurations": [
{
"name": "(gdb)DbgLaunch",//For pure linux machine
...
"program": ".vscode/dist/Debug/GNU-Linux/linux",
...
},
{
"name": "(WSLgdb) Launch",//For WSL under windows machine
...
"program": "/mnt/c/myproject/.vscode/dist/Debug/GNU-Linux/linux",
...
},
{
"name": "(Windows)DbgLaunch",//For pure windows machine
...
"program": ".vscode/x64/Debug/windows.exe",
...
}
]
在纯Linux机器上使用(gdb)DbgLaunch
,在纯Windows机器上使用(Windows)DbdLaunch
时,在可执行文件的相对地址下,(WSLgdb) Launch
可以使用相对地址,例如:>
"program": ".vscode/dist/Debug/GNU-Linux/linux"
给出错误,提示找不到启动的程序。这就需要按照整个路径进行配置
"program": "/mnt/c/myproject/.vscode/dist/Debug/GNU-Linux/linux",
以启动程序并对其进行调试。
是否也可以在WSL下提供相对路径?这样可以像其他项目一样复制并使用此launch.json
文件,而不是每次手动更改以提供完整路径。
VSCode's official documentation on getting C++ to work on WSL不涉及这种情况,因为它仅涉及可执行文件是编译文件本身而没有任何扩展名的情况,并且不允许在可执行文件所在的项目文件夹中使用任何特定的相对寻址的子文件夹