使用 shell 命令作为 VSCode 任务变量值
Using a shell command as VSCode task variable value
我正在尝试在 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/aarch64
、mylib/amd64
、等.[=23 下有特定于体系结构的版本 mylib
=]
我目前的尝试是定义 MYLIB
环境定义中使用的第二个 get_arch
任务,它只运行 uname
。
{
"label": "get_arch",
"type": "shell",
"command": "uname --m"
}
当然,此任务不是正确的命令,因此 VSCode 未检测到它,因此我的构建任务失败了。我查看了有关变量替换的文档,但他们没有提及是否可以替换 shell 命令。我想这在扩展中是可能的,但我想让事情尽可能简单。
此 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 picker 添加 pickString input 或创建仅添加单个命令 GetArch 的扩展。
如果不想每次都按回车,可以在args
部分添加选项useFirstResult: true
。
我正在尝试在 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/aarch64
、mylib/amd64
、等.[=23 下有特定于体系结构的版本 mylib
=]
我目前的尝试是定义 MYLIB
环境定义中使用的第二个 get_arch
任务,它只运行 uname
。
{
"label": "get_arch",
"type": "shell",
"command": "uname --m"
}
当然,此任务不是正确的命令,因此 VSCode 未检测到它,因此我的构建任务失败了。我查看了有关变量替换的文档,但他们没有提及是否可以替换 shell 命令。我想这在扩展中是可能的,但我想让事情尽可能简单。
此 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 picker 添加 pickString input 或创建仅添加单个命令 GetArch 的扩展。
如果不想每次都按回车,可以在args
部分添加选项useFirstResult: true
。