实验二:基础工具——make/cmake与git的使用
实验二:基础工具——make/cmake与git的使用
实验简介
在之前的学习中,我们通过手动调用 gcc 编译器完成了简单的单文件程序编译。然而,随着项目规模的增长,源码文件会增加到几十甚至上千个,手动编译不仅低效,且难以管理文件间的依赖关系。
本次实验旨在带大家脱离“人肉编译”时代,掌握 C/C++ 开发中的工业级构建工具。我们将学习如何使用 Make 自动化编译流程,利用 CMake 应对跨平台和复杂项目的配置,并使用 Git 记录代码的每一次“进化”,为后续的大型实验(如模拟器或内核开发)打下坚实的基础。
实验目的
- 掌握 Makefile 的基本语法:理解目标(Target)、依赖(Dependency)和命令(Command)的概念,学会使用自动化变量提高效率。
- 理解 CMake 的构建逻辑:学会编写
CMakeLists.txt,掌握外部构建(Out-of-source Build)的标准流程。 - 熟练使用 Git 进行版本管理:掌握工作区、暂存区、本地仓库的概念,熟悉
add,commit,log,checkout等常用操作。学会编写.gitignore过滤中间文件,保持远程仓库的整洁。
实验时间安排
注:此处为实验发布时的安排计划,请以课程主页和课程群内最新公告为准。
- 3.13 晚实验课:3月13日(周五)晚 19:30~22:30。
- 地点:电三楼 406/408。
实验内容
章节预览
1. Make 简介与 Makefile 编写
- 核心痛点:解决“修改一个文件就要重编整个项目”的低效问题。
- 重点概念:隐式规则、伪目标(
.PHONY)、变量定义、自动化变量($@,$<,$^)。 - 任务:为提供的多文件 C 项目手动编写一个 Makefile,实现增量编译与清理功能。
2. 现代构建系统:CMake
- 核心痛点:Makefile 在大型项目中过于冗长,且难以跨平台。
- 重点概念:
CMakeLists.txt、add_executable、库的链接、构建目录的分离。 - 任务:将第一部分的项目改用 CMake 管理,并尝试添加外部库依赖。
3. 版本控制工具:Git
- 核心痛点:代码改崩了找不回来?多人协作代码冲突?
- 重点概念:Git 的三个区域(Working Tree, Index, Repository)。
- 任务:初始化仓库,完成多次提交,学会通过
git log查看历史,并尝试使用分支(Branch)进行特性开发。