VS Code启动配置中如何用Glob模式匹配带版本号的程序路径?
如何在VS Code的launch.json中自动匹配带版本号的程序路径?
在Ubuntu环境下开发时,构建生成的程序会自动附加版本号(例如myprogram-5.3),当前VS Code的launch.json中program字段需要手动指定具体版本的路径,每次版本更新都要修改配置。由于构建目录中始终只有一个该程序文件,希望通过Glob模式自动匹配路径,但官方文档未提及program字段支持该模式,以下是可行的实现方法:
方法1:直接使用Shell命令获取路径
借助VS Code的shellCommand.execute命令,在program字段中执行shell命令匹配目标文件。需要先安装VS Code的Shell Command扩展。
修改后的launch.json配置:
{ "name": "config name", "type": "cppdbg", "request": "launch", "program": "${command:shellCommand.execute('ls ${workspaceFolder}/path/to/build/myprogram-*')}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}/path/to/build/", "environment": [], "externalConsole": false, "MIMode": "gdb" }
因为构建目录中只有一个匹配的程序文件,ls myprogram-*会直接返回唯一的文件路径,无需担心多匹配问题。
方法2:通过任务输出传递路径
在tasks.json中定义一个任务,执行命令获取程序路径并输出,再在launch.json中引用该任务的输出。
第一步:配置tasks.json
{ "version": "2.0.0", "tasks": [ { "label": "get-program-path", "type": "shell", "command": "echo ${workspaceFolder}/path/to/build/myprogram-*", "problemMatcher": [], "outputs": [ { "name": "programPath", "type": "stdout" } ] } ] }
第二步:修改launch.json
在launch.json中添加preLaunchTask确保任务先执行,然后引用任务输出的路径:
{ "name": "config name", "type": "cppdbg", "request": "launch", "program": "${task:get-program-path.programPath}", "preLaunchTask": "get-program-path", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}/path/to/build/", "environment": [], "externalConsole": false, "MIMode": "gdb" }
方法3:使用自定义Shell脚本
如果需要更复杂的逻辑,可以编写一个简单的shell脚本获取路径,再在launch中调用。
第一步:创建脚本文件
在工作区根目录创建get_program_path.sh,内容如下:
#!/bin/bash # 替换为你的构建目录路径 BUILD_DIR="${WORKSPACE_FOLDER}/path/to/build" ls "${BUILD_DIR}/myprogram-*"
给脚本添加执行权限:chmod +x get_program_path.sh
第二步:修改launch.json
{ "name": "config name", "type": "cppdbg", "request": "launch", "program": "${command:shellCommand.execute('. ${workspaceFolder}/get_program_path.sh')}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}/path/to/build/", "environment": [], "externalConsole": false, "MIMode": "gdb" }
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

