VsCode在Wsl2(Ubuntu)下的cpp/zig开发环境
· 3分钟阅读
VsCode
安装
scoop install vscode
插件
- WSL - Visual Studio Marketplace (windows)
- C/C++ - Visual Studio Marketplace (wsl2/ubuntu)
- CMake - Visual Studio Marketplace(wsl2/ubuntu)
- CMake Tools - Visual Studio Marketplace(wsl2/ubuntu)
- Zig Language - Visual Studio Marketplace(wsl2/ubuntu)
WSL
wsl --version
WSL 版本: 2.0.9.0
内核版本: 5.15.133.1-1
WSLg 版本: 1.0.59
MSRDC 版本: 1.2.4677
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows 版本: 10.0.19045.3803
sudo apt-get install wget ca-certificates
sudo apt update
sudo apt-get install openssh-server g++ gdb make ninja-build rsync zip
sudo apt-get install cmake
C/C++
用VsCode连接到WSL,打开一个目录。
Ctrl+Shift+P -> CMake: Quick Start

选一套工具包

建一个项目, C++, Executable

直接开始调试

Zig
安装
- zig: 参照Install Zig from a Package Manager安装
- zls: 直接下载Releases · zigtools/zls (github.com)就丢到
/usr/bin里面就可以
中间可能会遇到snap无法安装软件的问题,是因为systemctl在wsl中不支持,可以参考WSL 中的高级设置配置来启用。
我是跑了DamionGans/ubuntu-wsl2-systemd-script这个脚本 (虽说已经unsupported,但是目前对我还是有效的)
这里有讨论snap在wsl中的问题
WSL2- Ubuntu 20.04 Snap store doesn't work due to systemd dependency · Issue #5126 · microsoft/WSL (github.com)
调试
- 打开
Wsl/Ubuntu终端
cd ~
mkdir zello
cd zello
zig init-exe
zig build
- 用
VsCode打开zello目录,创建文件.vscode/launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "Zig Launch (Ubuntu)",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/zig-out/bin/zello",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": []
}
]
}
- F5, 开始调试

缓存目录
默认情况下,zig build会生成两个目录:zig-out和zig-cache,可以使用参数--prefix和--cache-dir来指定:
zig build --prefix D:\Code\xkyss\xkyss.zpp\build\playz\v0.11\hello\zig-out --cache-dir D:\Code\xkyss\xkyss.zpp\build\playz\v0.11\hello\zig-cache
这里需要指定全目录,相对目录会报错:error: BadPathName
如果需要在VsCode调试调试, 还需要修改一下.vscode/launch.json,(调整cwd和program的目录):
{
"version": "0.2.0",
"configurations": [
{
"name": "Zig Launch (Windows)",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/../../../build/playz/v0.11/hello/zig-out/bin/hello.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}/../../../build/playz/v0.11/hello",
"environment": []
}
]
}
后记
其实不管是Windows、WSL、还是Remote Linux,只要安装了插件和工具链,都是可以开发且调试的
