如何设置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:

  1. 安装代码运行器扩展
  2. 在文本编辑器中打开你的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我相信你需要改变fileLocationrelative ,但我没有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,您可以按照以下方式进行:

  1. 点击( Ctrl + P )键入:

     ext install cpptools 
  2. 打开一个文件夹( Ctrl + KCtrl + O ),并在扩展名为.cpp的文件夹内创build一个新文件(例如: hello.cpp ):

  3. input你的代码并点击保存。

  4. 点击( Ctrl + Shift + P键入, Configure task runner ,然后在列表底部selectother

  5. 在名称为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% 
  6. 按如下所示编辑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" } 
  7. 点击( Ctrl + Shift + B)运行Build任务,这将为项目创build.obj.exe文件。

  8. 为了debugging项目,按F5并selectC ++(Windows)

  9. launch.json文件中,编辑以下行并保存文件:

     "program": "${workspaceRoot}/hello.exe", 
  10. 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做同样的事情(除非微软先写好体面的文档…)。