Cracking C++(8): 开发环境的选择
文章目录
- Cracking C++(8): 开发环境的选择
- 1. 目的
- 2. 工具
- 代码编辑器 和 IDE
- Windows
- 命令行界面
- 编译器
- gcc/g++
- clang/clang++
- Microsoft Visual Studio
- 基于浏览器的编译器
- 3. 其他工具补充
- 调试器
- 代码分析工具
- 其他
1. 目的
在看了 hackingcpp 的 C++ Development Setup 后, 做一些笔记和扩展。
C++ 开发环境可以有很多种选择, 每种选择都可以认为是一种或多种技术选型的组合。
2. 工具
作者的建议是, 开始阶段选择一个文本编辑器 + 一个命令行的编译器, 而当你弄清楚了 C++ 的构建过程, 并知道怎么在命令行里敲敲打打后,就应该切换到 IDE, 原因是: 你得搞点大工程了, IDE 适合大工程。
代码编辑器 和 IDE
今天(2023-06-11 22:11:08)对于初学者来说 VSCode 或许是最好的选择(也许没有之一), 因为它有很棒的 UI, 提供了 IDE 的基本的特性比如补全、跳转到定义, 甚至有提供了高度可定制的 VIM 插件。
除了 VSCode, 还有一些选择, 如 VIM, Qt Creator, Dev-C++, Visual Studio, CLion.
这里其实还隐含了操作系统的选择: 有些 IDE / 编辑器支持了多个操作系统, 有些则是只提供了特定系统的版本。
本人的选择是: 高频使用 VSCode, 辅助编辑器则可以是 {VIM, SublimeText, Kate, Visual Studio, CLion}.
Windows
作者认为,如果C++学习者的操作系统是 Windows 10, 高度推荐使用 WSL, 基本上认为是一个完整功能的 Linux 命令行环境了。
作者还说, 绝大多数C++的学习资料都是在 Linux 环境下的。如果以软件开发作为职业, 毫无疑问应当熟悉 Linux。
此外, Windows10 还提供了 Windows Terminal, 值得尝试: https://devblogs.microsoft.com/commandline/getting-started-with-windows-terminal
本人的技术观点是:
- 用 WSL 本质上是用 Linux, 只不过不用想着折腾安装装系统、甚至把硬盘搞坏了
- 用 WSL 意味着屏蔽了 Linux 桌面, 显卡驱动问题也就变相屏蔽掉了,少了不少不必要的干扰, 但也意味着不知道 Kate, Spectacle, KolourPaint, Dolphin 这些 GUI 软件也是挺好用的
- 微软的 MSDN 网站其实也提供了一些 C++ 的内容, 不过有时候掺和着 Windows 特有的 API,怎么说呢, 要写跨平台的 C++ 其实或多或少还是会用到的
- Windows11 可以认为和 Windows10一样的; MacOSX 也是可以选择的环境
- Windows 下还有另一种选择: 用 MSYS2。
- 不管你现在选了哪个环境, 时间久了, 最好是每种环境都用过, 都能随时用于开发
命令行界面
In case you have never worked with a command line interface you should really start to learn some basics. It doesn’t take much to create folders, move/copy/delete files and compile and run your first, simple C++ programs.
作者这里是要求 C++ 学习者先把 Linux 的基本的命令行过一遍, 包括 bash 的语法也要过一遍。
作为过来人, 个人认为有三方面可以关注下:
- 基本的 shell 命令, 要熟悉; bash 脚本大概看懂就差不多了
- git 命令值得学, 还有一个是 cmake 要掌握,现代的 C++ 项目大都基于 CMake 构建
- python 可以适当学习,bash 甚至 perl 脚本写起来不太容易, 可以用 Python 来可快速实现小工具
编译器
gcc/g++
The “default” in the GNU/Linux world and very mature.
gcc/g++ 是 GNU/Linux 系统下的默认编译器, 也非常成熟。
在 Windows 上,如果你不打算用 WSL,作者推荐用 winlibs 网站提供的 编译器套件。
clang/clang++
作者毫无情感的列出了 ubuntu 下的下载方式。
本人其实推荐用户用 clang, 原因是大趋势是用 clang, 例如 Android NDK 早就从 GCC 切换到 Clang 了。
Microsoft Visual Studio
如果打算用 VS, 请使用免费的社区版本。
基于浏览器的编译器
-
Compiler Explorer
也被称为 godbolt, 支持了非常多的编译器,每个编译器提供了多个版本。
能显示汇编代码, 还可以引入第三方依赖库(只要 conan 和 vcpkg 有,就可以引入)。
支持 vim 模式, 支持暗色主题。 -
Wandbox
没怎么用过, 不过还是有一定名气的。
3. 其他工具补充
调试器
hackingcpp 原作者并没有在 tools 一节列出调试器,但实际上调试器又非常基本非常重要。这里简单列一下个人用过的工具:
- GDB: GCC 配套的调试器。 也可以调试 Clang 编译器编译出的程序
- LLDB: Clang/LLVM 套件中的调试器。个人其实更推荐用 GDB + LLDB 的组合。
可以考虑尝试, 不过更加高阶的:
- rr: record & replay 的缩写, 用于反向调试, 尤其对于偶现 bug 的调试, 应该会更好。不过实际经验中如果不是频繁调试偶现bug,似乎用不上
- WindDbg: Windows 上的专用调试器, 比 VS 自带的调试功能强大, 也含有 rr 的那种记录+回放方式的调试功能。
gdb 本身是命令行工具, 也有一些前端工具, 也就是图形界面更友好一些。本人推荐的是 VSCode 里的 CodeLLDB 插件。
代码分析工具
Address Sanitizer 一定少不了。查内存越界和内存泄漏的利器。
它的几个兄弟: Thread Sanitizer, UBSan, LeakSan, 虽然看起来也名气不错, 不过只能在 Linux/Mac 下使用。
其他
本来想着提一下调试器系列工具, 结果发现还有很多 topic 没覆盖到:
- 单元测试框架
- 性能评测工具
- 构建工具
- 代码格式化工具
- 源代码版本控制工具
- 包管理工具
…
推荐经常去 https://hackingcpp.com/cpp/tools/ecosystem.html 看看