GNU make的后缀规则详解

需积分: 50 96 下载量 117 浏览量 更新于2024-08-07 收藏 632KB PDF 举报
"这篇文档是关于老式风格的“后缀规则”在Makefile中的应用,主要摘自《老式风格的“后缀规则”-托马斯微积分第十版》和一篇由陈皓编写的《跟我一起写Makefile(PDF重制版)》。后缀规则是Makefile中一种定义构建规则的旧方法,它被模式规则逐渐取代,但在与旧版本Makefile的兼容性方面仍然重要。Makefile用于自动化程序的编译和链接过程,而后缀规则则是定义这种自动化的一种方式。 后缀规则分为双后缀和单后缀两种类型。双后缀规则如`.c.o`,定义了目标文件和源文件之间的转换关系,意味着`.c`文件经过编译生成`.o`文件。而单后缀规则如`.c`,则表示所有以`.c`为后缀的文件都将被处理。例如,一个典型的双后缀规则是: ``` .c.o: $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $< ``` 这个规则指示使用C编译器将`.c`文件编译成`.o`目标文件。 在后缀规则中,不能包含依赖文件,后缀被视为文件类型标识。如果一个规则试图包含依赖项,那它就不再是后缀规则,而是常规规则。Makefile中的规则通常包括目标、依赖项和命令,命令用于根据依赖项更新目标。 《跟我一起写Makefile》一书详细介绍了Makefile的各个方面,包括规则的书写、变量的使用、条件判断和函数等。书中讲解了如何编写规则,如规则的语法、通配符的使用、静态模式规则、自动推导依赖性以及命令的执行方式等。此外,还讨论了变量的基础和高级用法,如变量的赋值、追加、覆盖以及环境变量的使用。 条件判断允许Makefile根据特定条件执行不同代码,而函数提供了更复杂的文本处理能力,比如字符串替换、文件名操作等。这些功能使Makefile能够适应各种复杂的构建需求。 后缀规则虽然较为传统,但仍然是理解Makefile工作原理的关键部分,特别是在处理旧项目或需要与老版本Makefile兼容时。通过学习和掌握后缀规则,可以更高效地管理和构建软件项目。"