Visual Studio+CMake+WSL2:如何在WSL中执行tasks.vs.json任务
在Visual Studio 2022中让tasks.vs.json任务在WSL内执行的方案
问题场景
我在Visual Studio 2022(非VS Code)中维护一个面向Linux的CMake项目,通过CMakePresets.json可以正常在WSL中构建和调试,但始终无法让tasks.vs.json中的任务在WSL环境内执行——VS默认会在Windows环境运行这些任务。我尝试过使用"remote"任务类型,但不知道该如何指定对应的WSL机器。
可行解决方案
我找到一种通过wsl.exe命令行选项--和WSLENV环境变量实现的方案,配置示例如下:
{ "taskLabel": "task-test", "appliesTo": "/", "contextType": "custom", "type": "launch", "command": "C:\\Windows\\System32\\wsl.exe", "env": { "MY_TASK_VAR": "${cmake.CMAKE_HOME_DIRECTORY}", "WSLENV": "USERPROFILE/up:MY_TASK_VAR/u" }, "args": [ "--", "printenv" ] }
现有局限
目前可用的宏选项非常有限,比如无法直接复用CMakePresets.json中定义的变量。
参考文档(核心内容翻译)
- 《CMake预设在Visual Studio中的使用》:讲解
launch.vs.json与tasks.vs.json中的变量替换规则 - 《Visual Studio中自定义构建和调试任务》:介绍
tasks.vs.json支持的宏列表
内容的提问来源于stack exchange,提问作者FKDev
相关产品推荐
相关产品推荐

