我有以下文件夹结构:
.
── 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}"
关于 exec 我可以添加以下内容
./my_project/.vscode/my_project.code-workspace
:
"settings": {
"myProject.exec": "my_project"
}
并使用
"program": "${my_project_path}/build/Debug/bin/${config:myProject.exec}",
因为 exec 名称始终与项目名称相同。
但是,我不知道如何解决
my_project_path
。硬编码不是
一个好主意,因为不同的用户可能有不同的 my_project
路径
地点。${workspaceFolder}
指的是
shared_stuff
文件夹。
尽管如此,shared_stuff
始终是项目的子文件夹,因此原则上引用${workspaceFolder}
的上层文件夹就足够了,但更通用的解决方案会更好。
我不知道您是否想通过参数化 launch.json 中的任何非预设值来将值从外部传递到内部。在我看来,我认为这不是一个好主意,而是对本地路径进行硬编码。我的项目遇到了与您这个问题相同的情况,最后我发现执行不同调试版本的最佳方法是之前在 launch.json 中设置这些不同的调试配置信息并选择如下图所示的选项。在此输入图片描述