我有一个 tasks.json 脚本,当前编译代码
{
"version": "0.1.0",
"command": "gcc",
"isShellCommand": true,
"args": ["-Wall", "${relativeFile}", "-o", "${relativeFile}.exe", "-pedantic"],
"echoCommand": true,
"showOutput": "always",
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
这很好用,但是当我想运行文件时,我必须从命令行运行 exe。是否也可以在任务中执行此操作?因此,如果它成功完成构建,它会运行不同的任务吗?
原文由 Arn Vanhoutte 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以在 Visual Studio Code 中配置多个任务,其中一个允许您构建可执行文件,另一个将运行您的可执行文件。
或者,您还可以查看 Visual Studio Code 的“运行模式”(参见 此处)。如果您使用“运行模式”,您应该能够配置 Visual Studio Code 来构建您的可执行文件,然后启动它。
我对“运行模式”不是很熟悉,因此我将详细介绍如何定义多个任务以实现类似的结果。
免责声明:Visual Studio Code 不支持使用不同 shell 命令的任务(请参见 此处)。
这是正确的。在当前状态下,Visual Studio Code 没有“本机”支持来定义使用不同 shell 命令的任务。
免责声明:Visual Studio Code 的任务输出窗格不允许您以交互方式将输入传递给程序。
如果您的程序依赖于用户输入(例如,来自标准输入),您最好不要使用 Visual Studio Code 来运行您的可执行文件。
基本上,我们需要做的是定义两个任务,其中一个是构建任务,另一个是我们的启动任务。
由于 Visual Studio Code 不能很好地支持定义多个任务,每个任务都使用不同的 shell 命令,我们需要将
tasks.json
的"command"
属性更改为cmd
(或sh
,如果在 Linux/macOS 上)。我们还需要将"args"
属性设置为[/C]
([-c]
如果在 Linux/macOS 上)。我们这样做的原因是因为我们希望将要定义的每个任务都作为参数传递给新的 shell 实例。
下一步是定义我们的构建和启动任务。当我们这样做时,我们需要确保将要运行的命令作为任务参数放置。例如:
最后,我们要做的是将
"isBuildCommand"
属性添加到我们的构建任务(并确保它是true
),以及添加"isTestCommand"
属性到我们的启动任务(再次确保它是true
)。毕竟,我们的
tasks.json
文件可能看起来像这样:注意:如果将每个任务参数放在
args
数组中自己的字符串中不起作用,您也可以尝试将所有参数放在args
数组中的单个字符串中。例子:注意:如果您希望能够通过键盘快捷键调用您的任务,您可以使用
"workbench.action.tasks.build"
和"workbench.action.tasks.test"
编辑器命令。如果您需要将键绑定到这些命令的示例,以下是我如何将它们映射到我的
keybindings.json
文件中的示例:编辑:您可能只需要为测试任务定义一个键盘快捷键,因为构建任务可能已经定义了一个。在您花时间定义不同的键盘快捷键之前,请检查 此处。