You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 07:15:33