笔者最近打算深入的整理一份基于Arch WSL的最简单纯粹的C++配置。使用的方案是使用GCC作为编译器,CMake作为项目构建脚本,VSCode作为代码编辑器,使用clangd作为强大的语言服务器和检查器,使用clang-format整理格式化我自己的代码。如果你愿意跟我一起,请跟随我的步伐一一配置。
笔者在学习的时候,常常发现一些人根本不理解下面的这些概念。甚至到了上手项目的阶段了还在认为代码一点就能跑,完全对底层毫不自知的情况(讲个笑话,笔者曾跟一个小白争论,他认为C++已经不是经典的代码预处理编译链接运行了,给的理由是VS一点摁扭就能跑代码,让我实在哭笑不得)
IDE(集成开发环境):
IDE 是一种集成了多种开发工具的软件应用程序,旨在为开发者提供一个全面的开发环境。它通常包括代码编辑器、编译器、调试器、版本控制系统集成等功能。IDE 的主要优点是它提供了一个统一的界面,使得开发者可以在一个环境中完成编码、调试、测试和部署等任务。常见的 IDE 有 Visual Studio、Eclipse、IntelliJ IDEA 等(笔者这三个都用过,现在已经不使用了)。换而言之,当我们入门学习,不知道使用一个语言进行项目构建各基础开发组件之间关系的时候。或者是我们进行一个超大项目开发的时候,使用IDE能够有效的帮助我们将精力放到代码当中
代码编辑器:
代码编辑器是一种用于编写和编辑源代码的软件工具。与 IDE 相比,代码编辑器通常功能更为轻量,专注于代码的编写和编辑。它们可能不具备 IDE 中的编译、调试等高级功能,但通常支持语法高亮、代码补全、插件扩展等功能。常见的代码编辑器有 Visual Studio Code、Sublime Text、Atom 等。
编译器:
编译器是一种将源代码转换为机器代码或字节码的程序。它负责将高级编程语言编写的代码翻译成计算机能够理解和执行的指令。编译器通常包括词法分析、语法分析、语义分析、代码优化和代码生成等步骤。常见的编译器有 GCC(GNU Compiler Collection)、Clang、MSVC(Microsoft Visual C++ Compiler)等。对于我们现在关心的语言:C和C++来说,就是要深入的理解编译器,知道它如何帮助我们编写字节码,才能高效的排查程序——笔者就是理解了编译器和链接器辅助自己排查项目中出现的疑难杂症。
LSP(语言服务器协议):
LSP 是一种用于在代码编辑器或 IDE 与语言服务器之间进行通信的协议。语言服务器是一个独立的进程,负责提供代码补全、语法检查、跳转到定义、查找引用等语言相关的功能。LSP 的主要优点是它允许不同的编辑器或 IDE 使用相同的语言服务器,从而提供一致的语言支持。LSP 的典型实现包括 Microsoft 的 Language Server Protocol 和 Eclipse LSP4J。当然,我们不需要特别理解LSP到底如何工作,但是缺少它,我们写代码的日子可就fei
项目管理(以 CMake 为例):
项目管理工具用于管理和构建复杂的软件项目。CMake 是一个跨平台的自动化构建系统,它使用配置文件(CMakeLists.txt)来描述项目的构建过程。CMake 可以生成适用于不同平台和编译器的构建文件(如 Makefile、Visual Studio 项目文件等),从而简化了跨平台开发的复杂性。CMake 的主要特点包括模块化设计、支持多种编程语言、强大的脚本语言等。通过 CMake,开发者可以更方便地管理项目的依赖关系、编译选项和构建过程。
为什么是Arch?因为它可以帮助我们理解Linux应用开发中组件的一些关系,更重要的是——它轻量!
非常感谢大爹的推介的Arch WSL github仓库 yuk7/ArchWSL: ArchLinux based WSL Distribution. Supports multiple install. (github.com)
这里塞个私货:对Nix和一些底层感兴趣的朋友请看:博客 | Dessera Lab
下载好Release的东西后,请按照如下链接的步骤完成配置:How to Setup | ArchWSL official documentation (wsldl-pg.github.io)
当然,想要更加完美的配置Arch,可以参考笔者安装KDE之后的博客:Arch Linux With KDE6(x11)安装小记-CSDN博客,注意,不要在Arch WSL中安装KDE,脱裤子放屁,只需要参考如何配置中国源和下载yay即可。
关于VSCode的安装,即使是CSDN都有了成吨的配置教程,这里,笔者想说的是——我们不使用微软的C/C++插件,因为太低能,太难用(笔者开发一个OLED框架,才几千行代码,插件就开始有点罢工了,跳转一次函数花费肉眼可观的时间了!)。
clangd是安装VSCode插件即可。对于clang-format则需要安装的是clang-format的可执行文件。使用pacman或者是yay搜索clang-format。笔者目前搜索到的是——
安装完成后输入whereis clang-format查看是否安装到了全局上,然后按照其他使用Ubuntu的博主配置自己的clang-format即可。
下面的博客是按照手改settings完成配置的
vscode安装配置clang-format插件及使用_vscode clang format-CSDN博客
下面的博客是通过在GUI中更改配置实现的
VScode配置clang-format格式化 - 知乎 (zhihu.com)
笔者这里是WSL虚拟机,笔者将format文件放到了~/下,在VSCode的WSL用户区配置起效。然后如果需要自动格式化,在vscode搜索editor: save中找到格式化保存(可能是英文的)勾上即可。
Arch下安装CMake很简单:
yay -S cmake # yay下载
sudo pacman -S cmake # pacman下载
然后在vscode中安装插件cmake和cmake-tools,非常具体的流程请参考其他博主的博客。
最后,为了让自己的CMake和后端LSP同步,我们需要compile_commands.json,好在我们亲爱的cmake可以快速生成,办法如下:
在一个项目的空的根目录下(空的!),Ctrl + Shift + P选择配置一个新的CMake项目,生成build文件夹后,进入build,在命令行中指定CMake生成compile_commands.json
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=YES ..
compile_commands.json就会出现在build目录内,当我们在CMake修改了跟C++语言相关的配置的时候,生成一下compile_commands让LSP同步。现在就能欢乐的coding了。
cmake三部曲是——使用cmake生成makefile,使用makefile构建工程,运行我们的可执行文件!
配置完毕,到这里,你可以跟我一起进一步学习其他基础的内容了!