guide.deepin.org/docs/deepin进阶教程/11.编程开发/11.1.C++编程环境搭建.md

200 lines
8.2 KiB
Markdown
Raw Normal View History

# C/C++编程环境搭建
2023-02-23 11:51:27 +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代码格式化工具
```
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-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--)
## 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)