如何在两周内学会C++并构建优质的项目
简介 最近因为科研需要,捡起了好几年前大学水平的C++(不忍直视),毫无意外地忘记地一干二净。于是两周后就有了这篇文章,期望能够帮助所有拥有一定编程基础(至少写过一个完整的项目的那种)的同学入门并掌握这一门编程语言。通过阅读这篇文章,你能够学到: 用优质的资源,快速学习C++的语法构成 指针和防止内存泄漏等,较难的需要实战(编码)的内容 C++标准的现代化目录结构 利用CMake来进行跨平台开发/编译,把开发的软件安装到系统中 利用Catch2来编写单元测试,集成到CMake中去 Doxygen自动化生成API文档 Shell脚本与CMake联动,进一步实现自动化(龟速更新中) 跨系统交叉编译,做成Docker镜像(未来用到了再更) 我的开发平台是"macOS Catalina",选择的IDE是"vscode",编译器采用了"g++",在考虑兼容性和新特性之后,我选择了"c++17"版本进行开发。文中许多的资源,是需要梯子才能够访问的,这点请注意。 快速学习C++语法结构 写出你的 “Hello, world!"(VSCODE配置) 首先,让我们从简单难度开始:在你的本地代码仓库中建立一个文件夹,名字随意,创建一个 hello.cc 文件并保存,内容如下(现在不需要去关心这些内容代表什么): #include <iostream> int main() { std::cout << "hello, world!" << std::endl; return 0; } 打开 terminal 以后,你就可以进行手动编译了: # 编译 g++ hello.cc -o hello.o # 运行 ./hello.o 当然,每次进行这样的手动编译,实在繁琐并且无法进行断点调试。在VSCODE中编写C++项目,首先你要安装一个"C/C++“的扩展,然后打开刚才存放 hello.cc 的目录,双击打开 hello.cc 以后,按住 cmd+shift+p 呼出vscode的命令面板,输入 tasks: 索引到 “Tasks: Configure Task”(如图所示)选择编译器,这里我选择了g++作为编译器,之后你能在.vscode目录下发现自动创建出的 “tasks.json”(当然我们要进行修改) 之后选择左侧的调试按钮,创建一个 “launch.json”,附上我的两个配置文件如下: .vscode/task.json { "version": "2.0.0", "tasks": [ { "type": "shell", "label": "C/C++: g++ build active file", "command": "/usr/bin/g++", "args": [ "-std=c++17", "-g", "${file}", "-o", "${fileDirname}/caches/${fileBasenameNoExtension}....