myfreax
c++

如何在Linux/MacOS使用VScode构建C/C++开发环境

长期以来,开发环境一直与特定技术紧密结合

7 min read
By myfreax
如何在Linux/MacOS使用VScode构建C/C++开发环境
如何在Linux/MacOS使用VScode构建C/C++开发环境

无论您是否是《指环王》电影的粉丝,您都会同意几乎每个人都喜欢统一性,而拥有统一的开发体验是开发人员一直在努力和欢迎的东西。

长期以来,开发环境一直与特定技术紧密结合,例如Visual Studio主要用于.NET的开发。

我们已经看到开发人员之间的激烈争论,他们无休止地争论一种工具或者是另一种工具。

这永远不会结束,也不应该结束,因为很多时候这些争论会产生我们今天正在使用的工具。

在本教程中,将与您分享如何在Linux/MacOS构建C/C++开发环境的开发环境使用VS Code。

如果您已经将VS Code与其他一些编程语言一起使用,那么您已经成功了一半。对于其他人,你们可以看看Linux用户都是怎么构建自己的开发环境,以及是否想尝试一下。

VS Code是一个轻量级、开源、自由且可扩展的IDE,并且它每天都在变得更好。我经常在Node.JS开发工作中使用Vscode。

如果你是windows用户,请看这篇文章。如何在windows中安装Visual Studio并构建一个c/c++开发环境

C++教程:安装集成开发环境IDE | myfreax
一个集成开发环境IDE是一个软件包含了所有你需要开发,编译,链接和调试程序的工具。对于Windows用户建议安装Visual Studio 2019社区版。Linux用户请使用vscode或者Codeblock IDE

Fedora/CentOS 安装C/C++开发工具

yum groupinstall 'Development Tools'

Ubuntu/Debian 安装C/C++开发工具

sudo apt-get update
sudo apt-get install build-essential manpages-dev

安装 Vscode

VScode具体安装方式请参考我们的教程如何在Linux安装Vscode,教程包括在各种Linux发行版安装VScode。例如CentOS,Ubuntu,Debian。

vscode - myfreax
myfreax是一个Linux爱好者和全栈开发者博客,发布Linux,Kotlin,Golang,Javascript,Typescript,ESP32,物联网,C/C++,Android,Flutter,Dart,Python,HTML,CSS,Shell,Bash,Node.js,CD/CI文章和教程
安装Vscode

安装C/C++ for Visual Studio Code扩展

打开你的VScode,在左侧工具栏中点击扩展图标按钮或者使用快捷键Ctrl+Shift+X 然后搜索C/C++扩展,点击安装。

Vscode 配置C/C++扩展

你也许会看不惯函数之后的中括号{换行,但这是C/C++的默认风格。如果你不想折腾请继续使用这种风格。毕竟是官方标准,形成这个习惯看很多C/C++代码就不难了。

这种风格只有对长期使用使用不换行的人才就会形成强逼症,习惯已经养成难以改变。

还有一点就是写着写着中括号不知道在那里了。接下来我们改变这种函数后面中括号的换行的风格。

打开VScode设置,找到C/C++扩展设置,在搜索框中输入format,找到C_Cpp: Clang_format_fallback Style设置。

这是一个输入框,可以输入值是Visual StudioLLVMGoogleChromiumMozillaWebKitMicrosoftGNUnone

个人选择Google。请安装你的个人喜好配置,这里不细说各个风格设置。你也可以直接编辑VScode的设置文件,以JSON格式。

{
    "C_Cpp.clang_format_fallbackStyle": "Google",
}

安装C/C++ Advanced Lint扩展

打开你的Vscode,在活动栏中选择扩展图标按钮或者按下快捷键Ctrl+Shift+X ,然后搜索c++,点击安装。

配置C/C++ Advanced Lint扩展

C/C++ Advanced Lint只是一个插件,对代码的分析是使用Clang或者CPPcheck进行检查。

因此我们还需要安装Clang以及CPPcheck程序。对与Linux用户安装这个也是非常简单。

如果你的计算机运行的是基于Debian的Linux发行版,可以运行命令sudo apt-get install clang cppcheck安装Clang与CPPcheck。

对于macOS用户,安装Xcode及其CLI工具时已包含Clang。如果需要安装CPPcheck请运行命令brew install cppcheck

sudo apt-get install clang cppcheck
brew install cppcheck

现在检查工具已经完成安装。但是在默认情况下C/C++ Advanced Lint会对C/C++都进行检查。

这会导致某些语法冲突。因此,我们需要针对特定c语言项目或者c++项目启用获取关闭插件。

如果你在一个项目同时写C/C++。那你自己看着办吧,相信你已经是大佬了。

接下来我们说说怎么打开关闭C/C++的检查。打开C/C++ Advanced Lint扩展的设置。找到C-cpp-flylint › Clang: Enable的复选框,打勾表示启用。

由于C++使用的是CPPcheck。启用或者关闭C++的静态分析检查选项是C-cpp-flylint › Cppcheck: Enable,打勾表示启用。

创建c语言的项目

使用cd命令切换到家目录并运行mkdir命令mkdir -p c/helloworld创建C语言项目。

接下来先关闭C/C++ Advanced Lint扩展的C++静态分析检查,选项是C-cpp-flylint › Cppcheck。

时间问题,后面补上

创建c++语言项目

使用cd命令切换到家目录并运行mkdir命令mkdir -p cpp/helloworld创建C语言项目。

接下来关闭C/C++ Advanced Lint扩展的C静态分析检查,选项是C-cpp-flylint › Clang。

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main()
{
    vector<string> msg{"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};

    for (const string &word : msg)
    {
        cout << word << " ";
    }
    cout << endl;
}
helloworld.cpp

Vscode调试c++项目

现在已经创建C++项目文件,接下来配置VScode,调试c++代码。首先在你的项目根目录创建文件夹.vscode。运行命令mkdir -p cpp/helloworld/.vscode

.vscode目录创建三个文件,分别是c_cpp_properties.jsonlaunch.jsontasks.json

c_cpp_properties.json文件主要是配置C++项目include路径,以及使用C/C++的版本。

在这个示例中使用C的标准库版本是C11,C++的标准库版本是C17。include路径是标准的Linux系统头文件路径和项目目录的include目录。

当文件创建完成后,请按快捷键ctrl+shift+b构建cpp文件的二进制,然后按快捷键F5键开始进行调试。

{
  "configurations": [
    {
      "name": "Linux",
      "includePath": [
        "${workspaceFolder}/**"
      ],
      "defines": [],
      "compilerPath": "/usr/bin/g++",
      "cStandard": "c11",
      "cppStandard": "c++17",
      "intelliSenseMode": "${default}"
    }
  ],
  "version": 4
}
c_cpp_properties.json
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "g++ build and debug active file",
      "type": "cppdbg",
      "request": "launch",
      "program": "${fileDirname}/${fileBasenameNoExtension}",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ],
      "preLaunchTask": "g++ build active file",
      "miDebuggerPath": "/usr/bin/gdb"
    }
  ]
}
launch.json
{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: g++ build active file",
			"command": "/usr/bin/g++",
			"args": [
				"-fdiagnostics-color=always",
				"-g",
				"${file}",
				"-o",
				"${fileDirname}/${fileBasenameNoExtension}"
			],
			"options": {
				"cwd": "${fileDirname}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": "build",
			"detail": "compiler: /usr/bin/g++"
		}
	]
}
tasks.json

结论

至此,你已经熟悉如何在Linux/MacOS使用VScode构建C/C++开发环境。如果你遇到任何问题欢迎在下面发表评论。