myfreax
c++

如何在Linux/MacOS使用vscode构建一个c/c++开发环境

长期以来,开发环境一直与特定技术(例如 Visual Studio)紧密结合,用于主要基于.NET的开发。我们已经看到开发人员之间的激烈争论,他们无休止地争论一种工具而不是另一种工具

8 min read
By myfreax
如何在Linux/MacOS使用vscode构建一个c/c++开发环境

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

长期以来,开发环境一直与特定技术(例如 Visual Studio)紧密结合,用于主要基于.NET的开发。我们已经看到开发人员之间的激烈争论,他们无休止地争论一种工具而不是另一种工具。这永远不会结束,也不应该结束,因为很多时候这些争论会产生我们今天正在使用的很棒的工具。

在这篇文章中,我将与您分享一个使用VS Code的简单C/C++开发环境设置。如果您已经将VS Code与其他一些编程语言一起使用,那么您已经成功了一半。对于其他人,你们可以看看Linux用户都是怎么构建自己的开发环境,以及是否想尝试一下。

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

在本教程中,我将向您展示如何在Linux/MacOS使用vscode构建一个c/c++开发环境。我们还将说明如何是用vscode创建c/c++项目。如何使用vscode调试c/c++项目。安装调试c/c++的调试器gdb,编译器gcc与g++等工具以及语法检查工具clang和cppcheck。还有vscode需要的语法高亮,linter扩展如C/C++ for Visual Studio Code,C/C++ Advanced Lint等。

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

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

安装c/c++开发工具包

Fedora/Red Hat/CentOS/Opensuse或者 Scientific

yum groupinstall 'Development Tools'

ubuntu/Debian

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

安装Vscode

vscode具体安装方式请参考下面的连接,里面包括各种Centos,Ubuntu,Debian等发行版安装vscode教程。

vscode - myfreax

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

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

配置C/C++扩展

你也许会看不惯函数之后的中括号{换行,但这是C/C++的默认风格。我们认为如果你想折腾请继续使用这种风格,毕竟是官方标准,形成这个习惯看很多c/c++代码就不难。这种风格只有对长期使用使用不换行的人才就会形成强逼症,习惯已经养成难以改变,还有一点就是找写着写着中括号不知道在那里了。接下来我们改变这种函数后面中括号的换行的风格。

打开你的vsocde设置,找到c/c++扩展设置,在搜索框中输入format,找到C_Cpp: Clang_format_fallback Style设置,这是一个输入框,你可以输出值的包括Visual Studio, LLVM, Google, Chromium, Mozilla, WebKit, Microsoft, GNU, none,个人选择Google。请安装你的个人喜好配置,这里不细说各个风格设置。

你也可以直接编辑vscode的设置json,像下面这样:

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

安装C/C++ Advanced Lint for VS Code扩展

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

配置C/C++ Advanced Lint for VS Code扩展

C/C++ Advanced Lint仅只是一个插件,对代码的分析是使用clang或者cppcheck进行lint检查。因此我们还需要安装clang以及cppcheck程序。对与Linux用户安装这个也是非常简单。只需要简单执行下面的命令即可。

Debian/Ubuntu安装clang与cppcheck

sudo apt-get install clang cppcheck

macOS

对于macOS用户,安装Xcode及其CLI工具时已包含Clang。

brew install cppcheck

现在,lint检查工具已经安装完成。但是在默认情况,C/C++ Advanced Lint会对c/c++都进行lint检查。这回导致某些语法冲突。因此,我们需要针对特定c语言项目或者c++项目启用获取关闭插件。如果你是同时写c++或者c在一个项目。那你自己看着办吧,相信你已经大佬了。

接下来我们说说怎么打开关闭c/c++的lint检查。打开你的C/C++ Advanced Lint扩展的设置,找到C-cpp-flylint › Clang: Enable的复选框,打勾表示启用。对于c++,c++使用的是cppcheck。启用或者关闭c++的lint的检查选项是C-cpp-flylint › Cppcheck: Enable,这个一个复选框,打勾表示启用。

创建c语言的项目

使用cd命令切换到你的家目录并且使用mkdir命令执行mkdir -p c/helloworld创建文件夹,我们将在此文件夹中创建c项目。接下来,我们先关闭C/C++ Advanced Lint扩展的c++ lint检查,选项是C-cpp-flylint › Cppcheck。接着创建一个helloworld.c文件,请在c文件输出以下内容:

时间问题,后面补上

创建c++语言项目

使用cd命令切换到你的Home家目录并且使用mkdir命令执行mkdir -p cpp/helloworld创建文件夹,我们将在此文件夹中创建c++项目。接下来,我们先关闭C/C++ Advanced Lint扩展的c lint检查,选项是C-cpp-flylint › Clang。接着创建一个helloworld.cpp文件,请在helloworld.cpp文件输出以下内容:

#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,让vscode可以调试c++代码。在你的项目根目录中创建文件夹.vscode 使用mkdir命令:mkdir -p cpp/helloworld/.vscode,创建三个文件分别是c_cpp_properties.jsonlaunch.jsontasks.json ,内容如下:

{
  "configurations": [
    {
      "name": "Linux",
      "includePath": [
        "${workspaceFolder}/**"
      ],
      "defines": [],
      "compilerPath": "/usr/bin/g++",
      "cStandard": "c11",
      "cppStandard": "c++17",
      "intelliSenseMode": "${default}"
    }
  ],
  "version": 4
}
c_cpp_properties.json

c_cpp_properties.json文件主要是配置c++项目的include的path,以及使用c/c++的版本,在这个示例中使用c的标准版本是c11,c++的标准版本是c17。include路径是标准的Linux系统头文件路径和项目文件夹下所有的include目录。

{
  "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

当上面文件你都已经创建完成,请按下ctrl+shift+b先构建cpp文件的二进制,解下来按下F5键开始进行调试。

结论

至此,你已经基本完成了如何在Linux/MacOS使用vscode构建一个c/c++开发环境。如果你遇到任何问题欢迎在下面发表评论。