多根工作区中动态配置项目根目录与可执行文件参数
实现VS Code调试配置的项目无关参数化
文件夹结构
. ── my_project ├── .vscode │ └── my_project.code-workspace └── shared_stuff └── .vscode ├── launch.json └── tasks.json
shared_stuff是多项目共用的调试配置目录,当前my_project/shared_stuff/.vscode/launch.json里的硬编码路径配置如下:
"program": "/some_path/my_project/build/Debug/bin/my_project", "cwd": "/some_path/my_project"
需求是将项目根目录(示例中为/some_path/my_project)和可执行文件名(示例中为my_project)参数化,最终达到:
"program": "${my_project_path}/build/Debug/bin/${my_project_exec}", "cwd": "${my_project_path}"
可执行文件名的参数化实现
可执行文件名与项目名一致,只需在my_project/.vscode/my_project.code-workspace中添加自定义配置:
"settings": { "myProject.exec": "my_project" }
之后在launch.json中通过${config:myProject.exec}引用该值:
"program": "${my_project_path}/build/Debug/bin/${config:myProject.exec}",
项目根路径(${my_project_path})的通用解决方案
方案1:工作区配置定义根路径
在my_project.code-workspace中同时配置项目根路径,利用VS Code的${workspaceFolder}变量(打开该工作区文件时,${workspaceFolder}默认指向my_project根目录):
"settings": { "myProject.exec": "my_project", "myProject.path": "${workspaceFolder}" }
随后在launch.json中引用该配置:
"program": "${config:myProject.path}/build/Debug/bin/${config:myProject.exec}", "cwd": "${config:myProject.path}"
方案2:文件路径变量动态回溯
由于launch.json位于shared_stuff/.vscode下,可通过${fileDirname}(当前配置文件所在目录)向上回溯两级,直接指向项目根:
"program": "${fileDirname}/../../build/Debug/bin/${config:myProject.exec}", "cwd": "${fileDirname}/../../"
该方案无需额外配置,适合shared_stuff固定为项目一级子目录的场景。
方案3:多工作区命名引用
在工作区文件中为项目根文件夹命名后,通过命名变量直接引用:
先修改my_project.code-workspace的文件夹配置:
{ "folders": [ { "path": "..", "name": "my_project_root" }, { "path": "./shared_stuff", "name": "shared_config" } ], "settings": { "myProject.exec": "my_project" } }
之后在launch.json中使用命名工作区变量:
"program": "${workspaceFolder:my_project_root}/build/Debug/bin/${config:myProject.exec}", "cwd": "${workspaceFolder:my_project_root}"
内容的提问来源于stack exchange,提问作者Barzi2001
相关产品推荐
相关产品推荐

