如何在Visual Studio code中构建和运行c++代码
How to build and run C++ code in Visual Studio Code?
我有一个任务。当前编译代码的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。在任务中也可以这样做吗?所以如果它成功地完成了构建,它就会运行一个不同的任务?
如果其他人在搜索时遇到这个,像我一样,你现在可以将launch.json
中的preLaunchTask
属性设置为构建任务的name
属性,它将在启动前运行。
"name": "Debug (gdb) Launch",
"preLaunchTask": "Build All",
将在启动程序之前运行tasks.json
中的"name": "Builld All"
。
您可以在Visual Code文档中的调试页面中阅读相关信息。
您可以在Visual Studio Code中配置多个任务,其中一个将允许您构建可执行文件,另一个将运行您的可执行文件。
你也可以选择查看Visual Studio Code的"运行模式"(见这里)。如果你使用"运行模式",你应该能够配置Visual Studio Code来构建你的可执行文件,然后启动它。
我不是很熟悉"运行模式",因此我将详细说明如何定义多个任务来实现类似的结果。
免责声明:Visual Studio Code不支持使用不同shell命令的任务(见这里)。
这是正确的。在目前的状态下,Visual Studio Code并没有"原生"支持来定义使用不同shell命令的任务。
免责声明:Visual Studio Code的任务输出窗格将不允许您以交互方式向程序传递输入。
如果你的程序依赖于用户输入(例如,来自stdin),你最好不要使用Visual Studio Code 来运行你的可执行文件。
基本上,我们需要做的是定义两个任务,其中一个是构建任务,另一个是启动任务。
看到Visual Studio Code没有很好的支持定义多个任务,每个任务使用不同的shell命令,我们需要将tasks.json
的"command"
属性更改为cmd
(或sh
,如果在Linux/macOS上)。我们还需要将"args"
属性设置为[/C]
(如果在Linux/macOS上是[-c]
)。
我们这样做的原因是,我们希望我们将要定义的每个任务都作为参数传递给一个新的shell实例。
下一步是定义构建和启动任务。当我们这样做时,我们需要确保我们放置了想要运行的命令,作为一个任务参数。例如:
{
"taskName": "build",
"args": ["gcc", "-Wall", "${relativeFile}", "-o", "${relativeFile}.exe", "-pedantic"]
}
最后,我们要做的是将"isBuildCommand"
属性添加到我们的构建任务(并确保它是true
),以及将"isTestCommand"
属性添加到我们的启动任务(并再次确保它是true
)。
在所有这些之后,我们的tasks.json
文件看起来像这样:
{
"version": "0.1.0",
"command": "cmd",
"args": ["/C"],
"isShellCommand": true,
"showOutput": "always",
"suppressTaskName": true,
"tasks": [
{
"taskName": "build",
"args": ["gcc", "-Wall", "${relativeFile}", "-o", "${relativeFile}.exe", "-pedantic"],
"isBuildCommand": true
},
{
"taskName": "run",
"args": ["${relativeFile}.exe"],
"isTestCommand": true
}
]
}
注意:如果将每个任务参数放在args
数组中它们自己的字符串中不起作用,您也可以尝试将所有参数放在args
数组中的单个字符串中。例子:
["gcc -Wall ${relativeFile} -o ${relativeFile}.exe -pedantic"]
注:如果您希望能够通过键盘快捷键调用您的任务,您可以使用"workbench.action.tasks.build"
和"workbench.action.tasks.test"
编辑器命令。
如果您需要一个将键绑定到这些命令的示例,下面是我如何将它们映射到我的keybindings.json
文件中的示例:
[
{
"key": "f6",
"command": "workbench.action.tasks.build"
},
{
"key": "f7",
"command": "workbench.action.tasks.test"
}
}
Edit:您可能只需要为测试任务定义一个键盘快捷方式,因为构建任务可能已经定义了一个快捷方式。在您花时间定义不同的键盘快捷方式之前,请检查这里。
您可以创建一个用于构建的任务,并且作为它的参数可以传递用于运行的命令。作为一个例子,我用来编译和运行c++的任务如下所示:
{
"version": "2.0.0",
"tasks": [
{
"label": "g++ build and run",
"type": "shell",
"command": "g++",
"args": [
"-g",
"-o",
"out.exe",
""${file}"",
"&&",
"./out.exe",
"<",
"input.in",
">",
"output.out"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
在上面的任务中,我将我的源文件(文件的名称可以是任何人在这里使用${file}
)编译为out.exe
和运行out.exe
,同时从input.in
获取输入并输出输出到output.out
。
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 无法在 geany 上运行代码。无法执行构建命令
- 如何在使用Makefile构建后在cmd中运行该程序?
- 使用纯 CMake 构建 SFML 时出现运行时错误
- 在 Visual Studio 中构建一个没有 C/C++ 运行时的静态库
- CMake:尝试在 Jenkins 构建机器上运行时出现"Linked Library"错误 (0xc0000135)
- 什么是运行英特尔线程构建模块的 XCode 8 环境变量
- 有关为指向运行时确定的多个结构之一的指针构建类的建议
- 无法构建 quazip。MOC 编译器不会运行。命令行未找到相关类
- 是否可以在运行时在C++中构建变量名称?
- C\C++构建的dll在LabView中实时运行
- 如何在构建Qt应用程序时运行git命令
- 使用 CodeBlocks + GCC 构建的可执行文件是否可以在任何 Windows 上运行?
- C++运行时构建嵌套函数
- 代码示例 "switch" (b.eckel) 不在 Xcode 上构建/运行,而是在 QT 上构建/运行
- 应用程序停滞在构建/运行过程中
- 如何使用Eclipse Luna在CDT中使用构建/运行配置
- 构建运行良好,但在运行时崩溃
- Boost库构建-运行时链接和链接选项之间的差异
- 构建运行在不同版本linux上的cpp程序