Cracking C++(8): 开发环境的选择

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 插件。

Cracking C++(8): 开发环境的选择_第1张图片

除了 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 来可快速实现小工具

编译器

Cracking C++(8): 开发环境的选择_第2张图片

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 看看

你可能感兴趣的:(C/C++,c++,开发环境)