理解并掌握makefile中的隐含规则与C程序编译

需积分: 50 96 下载量 188 浏览量 更新于2024-08-07 收藏 632KB PDF 举报
本资源是一份关于编写Makefile的教程,由作者陈皓于2018年5月6日发布。主要内容涵盖了Makefile的基本概念、工作原理以及如何创建和管理Makefile中的规则、命令和变量。以下是关键知识点: 1. **隐含规则**: - Make工具内置了一套隐含规则,用于处理常见的构建任务,如编译C程序,其规则是如果目标文件.n.o未直接指定,Make会自动将其视为依赖于对应的源文件.n.c,并使用$(CC) –c $(CPPFLAGS) $(CFLAGS)作为编译命令。 2. **Makefile规则**: - Makefile中的规则定义了如何根据目标生成依赖项,通常包含目标、依赖项和生成命令。规则可以使用通配符和伪目标,如%.o表示所有以.o结尾的文件。 3. **规则语法**: - 规则的格式是:目标 : 命令,例如`target : dependencies ; commands`,其中`dependencies`是需要被构建的目标,`commands`是执行的命令。 4. **变量的使用**: - 变量是Makefile的核心,它们用于存储和传递信息,如编译器路径、目标文件扩展名等。变量可以嵌套、多行定义,并可通过环境变量、模式变量和特殊指示符如`override`进行控制。 5. **条件判断**: - 通过条件语句如ifeq()、ifdef()等,可以根据特定条件执行不同的规则或命令,实现更灵活的构建逻辑。 6. **函数**: - Make提供了内置的函数,如subst(), patsubst(), strip(), findstring(), filter()等,用于处理字符串、查找子串、过滤文件名等复杂操作,简化了规则的编写。 7. **Makefile的组织**: - 介绍了Makefile的结构,如如何写清空目标文件的规则、引用其他Makefile、处理环境变量MAKEFILES等。 这份教程详细讲解了如何利用Makefile进行项目管理和自动化构建,适合初学者和有经验的开发者深入理解Makefile的工作原理和实践应用。