【问题标题】:Using a shell command as VSCode task variable value使用 shell 命令作为 VSCode 任务变量值
【发布时间】:2020-03-03 23:20:22
【问题描述】:

我正在尝试在tasks.json 中定义一个 VSCode 任务,以适应 VSCode 运行的特定架构。为此,我想将架构设为uname --m例如“aarch64”或“amd64”)。我的目标是将uname 的输出插入到这样的环境变量中

"version": "2.0.0",
"tasks": [
    {
        "label": "build",
        "type": "shell",
        "command": "cmake",
        "args": [
            "-DMYLIB_INCLUDE_DIR=$MYLIB/include",
            "-DMYLIB_LIBRARY=$MYLIB/lib"
        ],
        "options": {
            "env": {
                "MYLIB": "${workspaceFolder}/mylib/${command:get_arch}"
            }
        },
    }
]

就我而言,我将在mylib/aarch64mylib/amd64下拥有特定于架构的mylib

到目前为止,我尝试定义在MYLIB 的环境定义中使用的第二个get_arch 任务,它只运行uname

{
    "label": "get_arch",
    "type": "shell",
    "command": "uname --m"
}

当然,此任务不是正确的命令,因此 VSCode 无法检测到它,并且我的构建任务失败。我查看了有关变量替换的文档,但他们没有提到是否可以替换 shell 命令。我想这在扩展中是可能的,但我想让事情尽可能简单。

【问题讨论】:

    标签: visual-studio-code vscode-settings vscode-tasks


    【解决方案1】:

    extension 提供了一种将任意 shell 命令作为 VS Code 命令启动的方法:

    "tasks": [
        {
            "label": "test_arch",
            "type": "shell",
            "command": "echo",
            "args": [
                "${MYARCH}"
            ],
            "options": {
                "env": {
                    "MYARCH": "${input:get_arch}"
                }
            },
            "problemMatcher": []
        },
    ],
    "inputs": [
        {
            "id": "get_arch",
            "type": "command",
            "command": "shellCommand.execute",
            "args": {
                "command": "uname -m"
            }
        }
    ]
    

    我发现的一个缺点是,当在选择器中提示命令结果时,您必须再次按 Enter。除此之外,这是实现您想要的最直接的方法,但它可以在许多类似的情况下使用。

    或者,您可以使用 Arch 选择器添加 pickString input 或创建仅添加单个命令 GetArch 的扩展。

    【讨论】:

      【解决方案2】:

      如果不想每次都按回车,可以在args部分添加useFirstResult: true选项。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-24
        • 2011-01-15
        • 2021-09-20
        • 2017-02-07
        • 2013-02-07
        相关资源
        最近更新 更多