VS Code配置C/C++编译运行环境

一 安装MinGW或者Clang(这里以MinGW为例)
我们不搞那个需要安装的,直接提供免安装的mingw 点击此处 提取码: bthj
下载后解压,完成后来配置C/C++环境变量,参考博文:win10配置C/C++环境变量

二 安装并配置C/C++插件
访问C/C++ - Visual Studio Marketplace点击Install启动VS Code安装插件即可。

可以参考官方文档来配置C/C++插件,这里着重对官方文档中没有讲明白的部分进行强调。比较懒的同学可以直接跳过每一节后面详细配置部分,直接复制配置修改对应编译器和Debugger的位置即可使用。下面均以Windows系统为主,macOS和Linux可以根据详细配置部分自行修改。

2.1 配置IntelliSence
新建一个项目文件夹,在VS Code中打开,然后在VS Code中按Ctrl + Shift + P输入命令C/C++: Edit Configurations...,VS Code会自动在项目文件夹根目录新建配置文件夹.vscode并同时在.vscode中新建配置文件c_cpp_properties.json。

先给出配置文件内容:

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "E:\\mingw64\\bin\\gcc.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

然后介绍其中重要的部分:

c_cpp_properties.json中共包含三部分:

env:可以在这里定义用户变量,在下面的configuration中可以使用这里定义的变量来代替多次重复出现的地址等配置。

configurations:在这里配置IntelliSence选项。每一个选项都会有默认值。

version:指c_cpp_properties.json的版本,这里不需要作修改。

configurations中包含以下配置项:

扫描二维码关注公众号,回复: 8957513 查看本文章

name:配置文件名称,在这里如果根据系统填”Linux”, “Mac”或者”Win32”,那么插件会自动根据这里填写的系统名称来读取默认值。在VS Code的状态栏中会显示这一配置名称。通过点击状态栏中的名称可以更换配置。在这里我们指定为Win32。

intelliSenseMode:如果插件设置中C_Cpp.intelliSenseEngine设置为”default”的话,这里可以指定IntelliSence的模式。msvc-x64对应Visual Studio模式,clang-x64对应Clang模式,gcc-x64对应GCC模式。Windows默认使用msvc-x64,macOS默认使用clang-x64,Linux默认使用gcc-x64,在这里由于我们用的是GCC,因此修改为gcc-x64。

includePath:指定IntelliSence在目录中搜索源文件所包含(#include)的头文件。这与在命令行中调用编译器时用-I选项指定的路径是一样的。如果路径末尾是/**的话IntelliSence会自动加载所有的子目录。如果是Windows系统并且安装了Visual Studio 的C++功能,或者配置了compilePath,这里可以不做配置。

macFramePath:同上,指定macOS框架的头文件目录地址。

defines:这里可以指定在编译过程中所调用的预处理符号的内容,与命令行调用编译器时-D选项指定的内容是一样的。如果是Windows系统并且安装了Visual Studio 的C++功能,或者配置了compilePath,这里可以不做配置。

forceInclude:(可选)强制加载的头文件,优先于源文件中指定的头文件,按照配置文件里的顺序加载,这里不需要配置。

compilerPath:(可选)编译器的绝对路径。插件会根据编译器决定includePathdefault define的值。可以在路径后附加选项,例如-nostdinc++, -m32, -fno-ms-extensions等等。如果选项有空格需要用双引号(“)括起来。这里需要找到刚才安装的MinGW中gcc.exe的位置,例如E:/mingw64/bin/gcc.exe

cStandard:C的标准,这里填c11。

cppStadard:C++的标准,这里填cpp17。

compileCommands:(可选)

2.2 配置编译和运行选项
VS Code通过Tasks来执行编译和运行操作。在.vscode文件夹中新建文件tasks.json进行配置。

先给出配置文件内容:

{
  "version": "2.0.0",
  "tasks": [
      {
          "label": "Build",
          "command": "E:/mingw64/bin/g++.exe", // 修改这里为本机g++路径
          "type": "shell",
          "args": [
              "-g",
              "-Wall",
              "-std=c++11",
              "-lm",
              "${file}",
              "-o",
              "${fileDirname}/${fileBasenameNoExtension}.exe" //Linux和macOS这里要修改为.o
          ],
          "presentation": {
              "reveal": "always",
              "echo": true,
              "focus": true
          },
          "problemMatcher": {
              "owner": "cpp",
              "fileLocation": ["relative", "${workspaceRoot}"],
              "pattern": {
                  "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                  "file": 1,
                  "line": 2,
                  "column": 3,
                  "severity": 4,
                  "message": 5
              }
          },
          "group": {
              "kind": "build",
              "isDefault": true
          }
      }, 
      {
          "label": "Run",
          "type": "shell",
          "dependsOn": "Build",
          "command": "${fileDirname}/${fileBasenameNoExtension}.o",
          "windows": {
              "command": "${fileDirname}/${fileBasenameNoExtension}.exe"
          },
          "args": [],
          "presentation": {
              "reveal": "always",
              "focus": true
          },
          "problemMatcher": [],
          "group": {
              "kind": "test",
              "isDefault": true
          }
      }
  ]
}

然后解释其中配置的内容:

label:任务标签。

type:任务类型,一般指定为shell或process。当设置为shell时会将命令看作终端操作,包括bash、cmd或PowerShell。当指定为process时会将命令看作是一个进程。这里选择shell。

command:命令内容,这里指定编译器的路径,比如g++的路径C:/Dev/MinGW/mingw64/bin/g++.exe。

args:命令的参数列表。

windows:Windows特定的配置属性,例如macOS和Linux上指定编译的输出文件为.o,而Windows下指定编译的输出文件为.exe。

group:指定任务的分组归属。例如指定group为test,那么可以通过命令面板的Run Test Task运行该任务。

presentation:指定如何在界面上显示任务输出。

​reveal:在执行任务时是否显示内置的终端面板,可选的值包括:always:始终显示;never:从不显示;silent:只在不扫描错误和警告时显示。默认值为always。

focus:终端是否在输入时激活。默认值为false。

​echo:是否将执行的命令输出到终端中。默认值为true。

showReuseMessage:是否显示”终端将被任务重用,按任意键关闭。“这一消息。

panel:控制是否在各任务间共享终端输出。

shared:共享终端,所有任务的输出都会在同一个终端内显示。

dedicated:每一个任务都有自己的输出终端,但是对于同一个任务来说,如果被重复执行的话仍会在同一个终端内显示。

new:无论是否是同一个任务都会打开一个新的输出终端。

clear:在任务执行之前是否清空输出终端,默认值为false。

group:指定任务输出的分组,同一个分组的任务会共享终端而非开启新终端。

problemMatcher:将编译器输出的错误映射至VS Code的问题面板。

2.3 配置Debug选项

先给出配置文件内容:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    // https://github.com/Microsoft/vscode-cpptools/blob/master/launch.md
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
            "type": "cppdbg",// 配置类型,这里只能为cppdbg
            "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
            "program": "${fileDirname}/${fileBasenameNoExtension}.o", // 将要进行调试的程序的路径
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "externalConsole": false,
            "environment": [],
            "MIMode": "gdb",
            "windows": {
                "program": "${fileDirname}/${fileBasenameNoExtension}.exe",
                "miDebuggerPath": "E:/mingw64/bin/gdb.exe" // 修改为本机gdb.exe的路径
            },
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "Build"
        }
    ]

}

然后解释每一项具体的含义:

program:(必填项)指定Debugger程序路径,在这里修改成本机gdb.exe的路径。

symbolSearchPath:指定符号文件的路径。

externalConsole:在Windows中,设置为true调用外部终端,设置为false调用VS Code集成终端;在Linux中,设置为true调用会通知VS Code启动外部终端,设置为false会调用VS Code集成终端;在macOS中,设置为true会通过lldb-mi调用外部终端,设置为false会在Debug面板中显示输出。

args:参数列表。

cwd:终端启动时所在的路径。

environment:环境变量。

MIMode:指定VS Code连接的Debugger的类型,必须是gdb或者lldb中一种。

miDebuggerPath:Debugger路径。如果没有指定完整路径,VS Code会搜索系统变量PATH。

miDebuggerArgs:传递给Debugger的参数列表。

stopAtEntry:是否在程序入口暂停。默认值为false。

type:指定Debugger类型,对于Visual Studio Windows debugger需要指定为cppvsdbg,对于GDB或者LLDB需要指定为cppdbg。

三 总结

完成以上步骤以后你会得到一个.vscode文件夹(包含三个配置文件)。之后再新建项目时直接将这个文件夹复制过去即可。

打开一个.c或者.cpp文件然后按F5即可启动调试。按Ctrl + Shift + P然后输入Run Build Task即可编译。输入Run Test Task即可运行。在设置中可以为这两个选项添加快捷键绑定。

发布了149 篇原创文章 · 获赞 84 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/weixin_43465312/article/details/102670430