理解与编写Makefile教程

4星 · 超过85%的资源 需积分: 9 4 下载量 54 浏览量 更新于2024-07-24 收藏 559KB PDF 举报
"跟我一起写Makefile - 陈皓 & 祝冬华" 这篇教程主要介绍了Makefile的编写和理解,由陈皓撰写并由祝冬华整理,旨在帮助读者从零开始学习如何阅读和编写Makefile。教程分为九个部分,详细讲解了Makefile的各个方面。 第一部分是概述,引导读者对Makefile有一个基本的认识。第二部分讨论程序的编译和链接过程,这是理解Makefile功能的关键,因为Makefile主要用于自动化这些任务。 第三部分深入Makefile的结构和规则。它解释了规则的概念,给出了一个简单的示例,并阐述了make的工作原理。此外,还介绍了变量的使用,包括自动推导和非传统风格的Makefile规则,以及清除目标文件的规则。 第四部分是对Makefile内容的总览,明确了Makefile中的显式规则、隐晦规则、变量定义、文件指示和注释等元素,同时讨论了Makefile的命名、包含其他Makefile、环境变量MAKEFILES的使用以及make的工作流程。 第五部分专注于书写规则,提供了一系列规则的实例和语法,讲解了通配符、文件搜索、伪目标、多目标、静态模式和依赖性的自动生成。 第六部分讲述了如何在Makefile中书写命令,包括显示命令、命令执行控制、错误处理、嵌套make调用以及命令包的定义。 第七部分详细介绍了变量的使用,包括基础概念、变量中的变量、高级用法、追加变量值、override指示符、多行变量、环境变量、目标变量和模式变量。 第八部分讲解了条件判断的运用,通过示例和语法解析,使读者能够根据条件执行不同的Makefile指令。 最后,第九部分介绍了函数的使用,包括函数的调用语法和一系列字符串处理及文件名操作函数,如subst、patsubst、strip等,这些函数增强了Makefile的灵活性和功能性。 整个教程旨在为读者构建一个全面的Makefile知识框架,无论你是初学者还是经验丰富的开发者,都能从中受益,提升构建和管理项目的效率。
2018-08-07 上传
跟我一起写 Makefile 作者:陈皓 整理:祝冬华 来源网络,希望能与大家分享这份学习资料,资源分数也设置了最低值,如有侵权,请联系我删除文件。 第一部分、概述 (6) 第二部分、关于程序的编译和链接 (6) 第三部分、Makefile 介绍 (7) 一、Makefile的规则 (7) 二、一个示例 (8) 三、make是如何工作的 (9) 四、makefile中使用变量 (10) 五、让make自动推导 (11) 六、另类风格的makefile (12) 七、清空目标文件的规则 (13) 第四部分、Makefile 总述 (13) 一、Makefile里有什么? (13) 1、显式规则。 (14) 2、隐晦规则。 (14) 3、变量的定义。 (14) 4、文件指示。 (14) 5、注释。 (14) 二、Makefile的文件名 (15) 三、引用其它的Makefile (15) 四、环境变量 MAKEFILES (16) 五、make的工作方式 (16) 第五部分、书写规则 (17) 一、规则举例 (17) 二、规则的语法 (17) 三、在规则中使用通配符 (18) 四、文件搜寻 (19) 五、伪目标 (20) 六、多目标 (22) 七、静态模式 (22) 八、自动生成依赖性 (24) 第六部分书写命令 (25) 一、显示命令 (26) 二、命令执行 (26) 三、命令出错 (27) 四、嵌套执行make (28) 五、定义命令包 (30) 第七部分使用变量 (30) 一、变量的基础 (31) 二、变量中的变量 (32) 三、变量高级用法 (34) 四、追加变量值 (37) 五、override 指示符 (37) 六、多行变量 (38) 八、目标变量 (39) 九、模式变量 (40) 第八部分使用条件判断 (40) 一、示例 (40) 二、语法 (42) 第九部分使用函数 (43) 一、函数的调用语法 (44) 二、字符串处理函数 (44) 1、subst (44) 2、patsubst (45) 3、strip (45) 4、findstring (46) 5、filter (46) 6、filter-out (46) 7、sort (47) 8、word (47) 9、wordlist (47) 10、words (47) 11、firstword (48) 12、字符串函数实例 (48) 三、文件名操作函数 (48) 1、dir (48) 2、notdir (48) 3、suffix (49) 4、basename (49) 5、addsuffix (49) 6、addprefix (49) 7、join (50) 四、foreach 函数 (50) 五、if 函数 (50) 六、call函数 (51) 七、origin函数 (51) “undefined” (52) “default” (52) “file” (52) “command line” (52) “override” (52) “automatic” (52) 八、shell函数 (53) 九、控制make的函数 (53) 1、error (53) 2、warning (54) 第十部分 make 的运行 (54) 二、指定Makefile (54) 三、指定目标 (55) “all” (56) “clean” (56) “install” (56) “print” (56) “tar” (56) “dist” (56) “TAGS” (56) “check”和“test” (56) 四、检查规则 (57) 五、make的参数 (57) 第十一部分隐含规则 (61) 一、使用隐含规则 (61) 二、隐含规则一览 (62) 1、编译C程序的隐含规则 (63) 2、编译C++程序的隐含规则 (63) 3、编译Pascal程序的隐含规则 (63) 4、编译Fortran/Ratfor程序的隐含规则 (63) 5、预处理Fortran/Ratfor程序的隐含规则 (63) 6、编译Modula-2程序的隐含规则 (63) 7、汇编和汇编预处理的隐含规则 (64) 8、链接Object文件的隐含规则 (64) 9、Yacc C程序时的隐含规则 (64) 10、Lex C程序时的隐含规则 (64) 11、Lex Ratfor程序时的隐含规则 (65) 12、从C程序、Yacc文件或Lex文件创建Lint库的隐含规则 (65) 三、隐含规则使用的变量 (65) 1、关于命令的变量。 (65) 2、关于命令参数的变量 (66) 四、隐含规则链 (67) 五、定义模式规则 (68) 1、模式规则介绍 (68) 2、模式