如何设置VSCode来编译C ++代码?
微软的Visual Studio代码编辑器是相当不错的,但它没有默认支持构buildC ++项目。
我如何configuration它来做到这一点?
构build任务是项目特定的。 要创build一个新项目,请在VSCode中打开一个目录。
按照这里的说明,按Ctrl+Shift+P
,键入Configure Tasks
,select它,然后按Enter
。
tasks.json文件将被打开。 将以下构build脚本粘贴到文件中,并保存它:
{ "version": "0.1.0", "command": "make", "isShellCommand": true, "tasks": [ { "taskName": "Makefile", // Make this the default build command. "isBuildCommand": true, // Show the output window only if unrecognized errors occur. "showOutput": "always", // No args "args": ["all"], // Use the standard less compilation problem matcher. "problemMatcher": { "owner": "cpp", "fileLocation": ["relative", "${workspaceRoot}"], "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } } ] }
现在转到File->Preferences->Keyboard Shortcuts
并为构build任务添加以下键绑定:
// Place your key bindings in this file to overwrite the defaults [ { "key": "f8", "command": "workbench.action.tasks.build" } ]
现在,当你按下F8
,Makefile将被执行,错误将会在编辑器中被加下划线。
编译和运行C ++代码有一个更简单的方法,不需要configuration:
- 安装代码运行器扩展
- 在文本编辑器中打开你的C ++代码文件,然后使用快捷键
Ctrl+Alt+N
,或者按F1
,然后select/inputRun Code
,或者右键单击文本编辑器,然后在上下文菜单中单击Run Code
,代码将被编译运行,输出将显示在输出窗口中。
此外,您可以根据需要使用不同的C ++编译器更新settings.json中的configuration,C ++的默认configuration如下所示:
"code-runner.executorMap": { "cpp": "g++ $fullFileName && ./a.out" }
如果你的项目有一个CMakeconfiguration,那么设置VSCode非常简单,例如tasks.json
就像下面这样:
{ "version": "0.1.0", "command": "sh", "isShellCommand": true, "args": ["-c"], "showOutput": "always", "suppressTaskName": true, "options": { "cwd": "${workspaceRoot}/build" }, "tasks": [ { "taskName": "cmake", "args": ["cmake ."] }, { "taskName": "make", "args" : ["make"], "isBuildCommand": true, "problemMatcher": { "owner": "cpp", "fileLocation": "absolute", "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } } ] }
这假定在CMakeconfiguration的工作区的根目录下有一个文件夹。
还有一个CMake集成扩展 ,在VScode中增加一个“CMake build”命令。
PS! problemMatcher
是为clang
-build设置的。 要使用GCC我相信你需要改变fileLocation
为relative
,但我没有testing过这个。
下面是我如何使用g ++编译器configuration我的VS for C ++,它的工作原理很好,包括debugging选项:
tasks.json文件
{ "version": "0.1.0", "command": "g++", "isShellCommand": true, // compiles and links with debugger information "args": ["-g", "-o", "hello.exe", "hello.cpp"], // without debugger information // "args": ["-o", "hello.exe", "hello.cpp"], "showOutput": "always" }
launch.json文件
{ "version": "0.2.0", "configurations": [ { "name": "C++ Launch (Windows)", "type": "cppdbg", "request": "launch", "program": "${workspaceRoot}/hello.exe", "MIMode": "gdb", "miDebuggerPath": "C:\\MinGw\\bin\\gdb.exe", "stopAtEntry": false, "cwd": "${workspaceRoot}", "externalConsole": false, "visualizerFile": "${workspaceRoot}/my.natvis" } ] }
我也在VS Code中安装了'C / C ++ for Visual Studio Code'扩展
现在有一个来自Microsoft的C / C ++语言扩展。 您可以通过转到“快速打开”( Ctrl + p )并键入以下内容来安装它:
ext install cpptools
你可以在这里阅读:
https://blogs.msdn.microsoft.com/vcblog/2016/03/31/cc-extension-for-visual-studio-code/
这是非常基本的,截至2016年5月。
使用更新的VS Code,您可以按照以下方式进行:
-
点击( Ctrl + P )键入:
ext install cpptools
-
打开一个文件夹( Ctrl + K & Ctrl + O ),并在扩展名为.cpp的文件夹内创build一个新文件(例如: hello.cpp ):
-
input你的代码并点击保存。
-
点击( Ctrl + Shift + P键入,
Configure task runner
,然后在列表底部selectother
。 -
在名称为build.bat的同一文件夹中创build一个batch file,并将以下代码包含到文件的主体中:
@echo off call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 set compilerflags=/Od /Zi /EHsc set linkerflags=/OUT:hello.exe cl.exe %compilerflags% hello.cpp /link %linkerflags%
-
按如下所示编辑task.json文件并保存 :
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "0.1.0", "command": "build.bat", "isShellCommand": true, //"args": ["Hello World"], "showOutput": "always" }
-
点击( Ctrl + Shift + B)运行Build任务,这将为项目创build.obj和.exe文件。
-
为了debugging项目,按F5并selectC ++(Windows) 。
-
在launch.json文件中,编辑以下行并保存文件:
"program": "${workspaceRoot}/hello.exe",
-
打F5 。
新的2.0.0 tasks.json版本的makefile任务示例。
在下面的一些评论片段,我希望他们会有用的。
{ "version": "2.0.0", "tasks": [ { "taskName": "bocia", "type": "shell", "command": "make", // use options.cwd property if the Makefile is not in the project root ${workspaceRoot} dir "options": { "cwd": "${workspaceRoot}/burba/tests/bocia" }, // start the build without prompting for task selection, use "group": "build" otherwise "group": { "kind": "build", "isDefault": true }, "presentation": { "echo": true, "reveal": "always", "focus": false, "panel": "shared" }, // arg passing example: in this case is executed make QUIET=0 "args": ["QUIET=0"], // Use the standard less compilation problem matcher. "problemMatcher": { "owner": "cpp", "fileLocation": ["relative", "${workspaceRoot}"], "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } } ] }
由于缺乏明确的文档,我在Github上创build了一个应用程序(包括构build和debugging)的Mac项目:
vscode-MAC-C-示例
请注意,它需要XCode和VSCode Microsoft cpptools扩展。
我打算为Windows和Linux做同样的事情(除非微软先写好体面的文档…)。