# C/C++编程环境搭建 ## 基础环境 ### 编译器 你首先需要安装一些基础软件包,这些软件包是编译C/C++程序所必须的。 ```Shell sudo apt install build-essential ``` build-esential是一个元包,它包含了编译C/C++程序所必须的软件包。包括了gcc、g++、make、libc6-dev|libc-dev. 当然你也可以安装llvm,它也是一个C/C++编译器,它的优势是可以编译C/C++以外的语言,比如Rust、Go、Swift等。 ```Shell sudo apt install llvm # llvm后端编译器 sudo apt install clang # clang前端编译器 ``` ### 调试工具 调试工具是编程的必备工具,它可以帮助我们快速定位程序的错误,提高程序的运行效率。 ```Shell sudo apt install gdb # gdb调试器 sudo apt install valgrind # valgrind内存检查工具 ``` ### 静态分析工具 静态分析工具可以帮助我们检查程序的错误,比如内存泄漏、空指针访问等。 ```Shell sudo apt install cppcheck # cppcheck静态分析工具 sudo apt install clang-tidy # clang-tidy静态分析工具 ``` ### 代码格式化工具 代码格式化工具可以帮助我们格式化代码,使得代码风格统一,提高代码的可读性。 ```Shell sudo apt install clang-format # clang-format代码格式化工具 ``` clang-format可以使用配置文件进行配置,deepin社区提供一份符合deepin代码风格的配置文件,你可以在[这里](https://github.com/linuxdeepin/deepin-styleguide) 找到,不过建议不要依靠这个配置文件,因为这个配置文件是根据deepin的代码风格来的,如果你的代码风格不是deepin的,那么这个配置文件就不适合你。 拥有一个好的代码风格是非常重要的,它可以提高代码可读性,可维护性,可扩展性,可复用性,可测试性等等,所以你应该自己制定一套代码风格,然后使用clang-format来格式化你的代码。 不过你还是不要太过于依赖工具,因为工具是人类的延伸,而不是人类的替代。当clang-format不能满足你的需求时,你应该自己去修改代码。 `.clang-format`配置文件详见[官方文档](https://clang.llvm.org/docs/ClangFormatStyleOptions.html) ### 代码检查工具 代码检查工具可以帮助我们检查代码的错误,比如变量未使用、变量未初始化等。 ```Shell sudo apt install clang-check # clang-check代码检查工具 ``` ### 代码覆盖率工具 代码覆盖率工具可以帮助我们检查代码的覆盖率,比如哪些代码没有被测试到。 ```Shell sudo apt install lcov # lcov代码覆盖率工具 ``` ### 代码压缩工具 代码压缩工具可以帮助我们压缩代码,使得代码占用的空间更小。 ```Shell sudo apt install upx # upx代码压缩工具 ``` ### 构建工具 构建工具可以帮助我们构建项目,比如编译、链接、安装等。 ```Shell sudo apt install cmake # cmake构建工具 sudo apt install meson # meson构建工具 sudo apt install ninja-build # ninja构建工具 ``` ## 文本编辑器 其实当上方的软件包都安装了之后,你就可以开始编写C/C++程序了,但是你还需要一个文本编辑器,这个文本编辑器可以是任意的,比如gedit、vim、emacs等。 这里作为推荐,我推荐几款文本编辑器 ### vim vim是一款非常强大的文本编辑器,它的功能非常强大,但是它的学习曲线也非常陡峭,所以如果你是初学者,我不建议你使用vim。 ```Shell sudo apt install vim ``` ### emacs emacs是一款非常强大的文本编辑器,它的功能非常强大,但是它的学习曲线也非常陡峭,所以如果你是初学者,我不建议你使用emacs。 ```Shell sudo apt install emacs ``` ### vscode vscode是微软出品的一款文本编辑器,它的功能非常强大,而且它的学习曲线也不是很陡峭,所以如果你是初学者,我建议你使用vscode。 根据vscode的开源协议,deepin不能在源中提供vscode的安装包,所以你需要去官网下载安装包,然后手动安装。 或者(推荐)在应用商店中搜索vscode,然后安装。(这种方式会添加vscode官方的软件源,所以以后更新vscode会方便很多) ### notepad-- notepad--是一个开源跨平台的文本编辑器,其gitee项目地址为: [https://gitee.com/cxasm/notepad--](https://gitee.com/cxasm/notepad--) ## IDE IDE是一款集成开发环境,它可以帮助我们快速开发程序,比如编译、调试、运行、格式化、检查、压缩等。 ### Eclipse CDT Eclipse CDT 是一个开源的 C/C++ 开发工具,可以在 Linux、Windows 和 Mac 上使用。它是一个功能强大的 IDE,可以提供代码补全、调试、版本控制、构建、重构等功能。Eclipse CDT 的插件生态系统也非常丰富。 ### Code::Blocks Code::Blocks 是一个免费的跨平台 C++ IDE,适用于 Linux、Windows 和 Mac。它提供了许多功能,包括代码补全、调试、构建、版本控制等。Code::Blocks 的用户界面简单易用,适合初学者和中级开发者。 ### Qt Creator Qt Creator 是一个基于 Qt 库的跨平台 IDE,适用于 C++ 和 QML 开发。它提供了集成的调试器和代码编辑器,并支持代码补全、代码模板、自动重构等功能。Qt Creator 还可以用于开发 GUI 应用程序。 ### KDevelop KDevelop 是一个开源的 C++ IDE,是 KDE 开发环境的一部分,适用于 Linux 和其他 UNIX 操作系统。它提供了代码补全、调试、版本控制、语法检查等功能,还可以集成其他开发工具和外部应用程序。 ### NetBeans NetBeans 是一个免费的跨平台 IDE,适用于 C++、Java 和其他编程语言。它提供了代码补全、调试、版本控制、GUI 开发工具等功能,可以帮助开发者快速开发应用程序 ### CLion CLion 是一个基于 IntelliJ IDEA 的 C/C++ IDE,适用于 Linux、Windows 和 Mac。它提供了代码补全、调试、版本控制、构建、重构等功能,还可以集成其他开发工具和外部应用程序。 CLion是一个收费软件,如果你是学生的话,可以去官网申请学生许可证。 ## 11.1.4资源指南 ### 书籍 #### C++ Primer Plus 这是一本非常适合初学者的 C++ 教材,详细讲解了 C++ 的基本语法、数据类型、函数、类和对象等概念,还有大量的练习题和案例,可以帮助读者更好地理解和掌握 C++。 #### Effective C++系列 这是一系列由著名 C++ 专家 Scott Meyers 写的书籍,详细介绍了 C++ 的一些高级特性和最佳实践,可以帮助读者写出高效、健壮、易于维护的 C++ 代码。 #### C++ Primer 这是一本非常流行的 C++ 教材,详细介绍了 C++ 的语言特性、标准库和模板等内容,适合有一定编程基础的读者学习。 #### The C++ Programming Language 这是 C++ 之父 Bjarne Stroustrup 写的一本权威教材,详细介绍了 C++ 的语言设计和应用,可以帮助读者深入理解 C++ 的特性和设计思想。 ### 网站 #### C++ Reference 这是一个在线的 C++ 参考文档,可以帮助读者查找 C++ 的语法、标准库和特性等内容,非常方便。 #### C++知识视频 在国内的视频网站上有许多大学的 C++ 课程,可以帮助读者学习 C++。 ## C++/C 的UI库 ### Qt Qt 是一个跨平台的 C++ 库,可以用于开发桌面应用程序、移动应用程序和嵌入式系统。Qt 提供了丰富的 UI 组件,可以帮助开发者快速开发 GUI 应用程序。 详见:[Qt](https://www.qt.io/) #### DTK DTK 是一个基于 Qt 的跨平台 C++ 库,提供了丰富的 UI 组件,可以帮助开发者快速开发 GUI 应用程序。DTK 的目标是提供一个简单、易用、高效的 C++ 库,可以帮助开发者快速开发 GUI 应用程序。 详见:[11.5.DTK编程环境搭建](./11.5.DTK%E7%BC%96%E7%A8%8B%E7%8E%AF%E5%A2%83%E5%BC%80%E5%8F%91.md) ### EasyX EasyX,全名:“EasyX Graphics Library for C++”。由于其采用静态编译,并不依赖任何 dll,超低的学习成本,深受许多开发者喜欢 sdeepin下环境搭建:[EasyX在deepin下的环境搭建](https://wiki.deepin.org/zh/%E5%A6%82%E4%BD%95%E5%9C%A8deepin%E4%B8%8B%E4%BD%BF%E7%94%A8EasyX%E5%BA%93)