2023-03-06 16:38:17 +08:00
|
|
|
|
# C/C++编程环境搭建
|
2023-02-23 11:51:27 +08:00
|
|
|
|
|
2023-03-06 16:38:17 +08:00
|
|
|
|
## 基础环境
|
2023-02-23 11:51:27 +08:00
|
|
|
|
|
|
|
|
|
### 编译器
|
|
|
|
|
|
|
|
|
|
你首先需要安装一些基础软件包,这些软件包是编译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代码格式化工具
|
|
|
|
|
```
|
|
|
|
|
|
2023-02-27 15:10:07 +08:00
|
|
|
|
clang-format可以使用配置文件进行配置,deepin社区提供一份符合deepin代码风格的配置文件,你可以在[这里](https://github.com/linuxdeepin/deepin-styleguide)
|
2023-02-23 11:51:27 +08:00
|
|
|
|
找到,不过建议不要依靠这个配置文件,因为这个配置文件是根据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构建工具
|
|
|
|
|
```
|
|
|
|
|
|
2023-03-06 16:38:17 +08:00
|
|
|
|
## 文本编辑器
|
2023-02-23 11:51:27 +08:00
|
|
|
|
|
|
|
|
|
其实当上方的软件包都安装了之后,你就可以开始编写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--
|
|
|
|
|
|
2023-02-23 16:44:45 +08:00
|
|
|
|
notepad--是一个开源跨平台的文本编辑器,其gitee项目地址为: [https://gitee.com/cxasm/notepad--](https://gitee.com/cxasm/notepad--)
|
|
|
|
|
|
2023-03-06 16:38:17 +08:00
|
|
|
|
## IDE
|
2023-02-23 16:44:45 +08:00
|
|
|
|
|
|
|
|
|
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++。
|
2023-03-09 11:01:56 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 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)
|