跳至内容
实验二:基础工具——make/cmake与git的使用

实验二:基础工具——make/cmake与git的使用

实验简介

在之前的学习中,我们通过手动调用 gcc 编译器完成了简单的单文件程序编译。然而,随着项目规模的增长,源码文件会增加到几十甚至上千个,手动编译不仅低效,且难以管理文件间的依赖关系。

本次实验旨在带大家脱离“人肉编译”时代,掌握 C/C++ 开发中的工业级构建工具。我们将学习如何使用 Make 自动化编译流程,利用 CMake 应对跨平台和复杂项目的配置,并使用 Git 记录代码的每一次“进化”,为后续的大型实验(如模拟器或内核开发)打下坚实的基础。

实验目的

  1. 掌握 Makefile 的基本语法:理解目标(Target)、依赖(Dependency)和命令(Command)的概念,学会使用自动化变量提高效率。
  2. 理解 CMake 的构建逻辑:学会编写 CMakeLists.txt,掌握外部构建(Out-of-source Build)的标准流程。
  3. 熟练使用 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.txtadd_executable、库的链接、构建目录的分离。
  • 任务:将第一部分的项目改用 CMake 管理,并尝试添加外部库依赖。

3. 版本控制工具:Git

  • 核心痛点:代码改崩了找不回来?多人协作代码冲突?
  • 重点概念:Git 的三个区域(Working Tree, Index, Repository)。
  • 任务:初始化仓库,完成多次提交,学会通过 git log 查看历史,并尝试使用分支(Branch)进行特性开发。