MakeFile编写规则.doc
文本预览下载声明
MakeFile编写规则
什么是makefile 3
关于程序的编译和链接 3
Makefile 介绍 4
一、Makefile的规则 4
二、一个示例 4
三、make是如何工作的 6
四、makefile中使用变量 6
五、让make自动推导 7
六、另类风格的makefile 8
七、清空目标文件的规则 8
Makefile 总述 9
一、Makefile里有什么 9
二、Makefile的文件名 9
三、引用其它的Makefile 9
四、环境变量 MAKEFILES 10
五、make的工作方式 10
实例说明 11
一、简单例子 11
二、规则的语法 11
三、在规则中使用通配符 12
四、文件搜寻 12
五、伪目标 13
六、多目标 14
七、静态模式 15
八、自动生成依赖性 16
书写命令 17
一、显示命令 17
二、命令执行 18
三、命令出错 18
四、嵌套执行make 19
五、定义命令包 20
使用变量 21
一、变量的基础 21
二、变量的赋值 21
第一种方式 22
第二种方式 22
三、变量高级用法 23
一种是变量值的替换 23
第二种高级用法——“把变量的值再当成变量” 24
四、追加变量值 25
五、override 指示符 26
六、多行变量 26
七、环境变量 26
八、目标变量 27
九、模式变量 27
十、自动化变量 28
使用条件判断 30
makefile的编写规则--语法及函数 31
条件表达式 31
函数 32
一、函数的调用语法 32
二、字符串处理函数 33
$(subst from,to,text ) 33
$(patsubst pattern,replacement,text ) 33
$(strip string ) 34
$(findstring find,in ) 34
$(filter pattern...,text ) 34
$(filter-out pattern...,text ) 34
$(sort list ) 35
$(word n,text ) 35
$(wordlist s,e,text ) 35
$(words text ) 35
$(firstword text ) 36
三、文件名操作函数 36
$(dir names... ) 36
$(notdir names... ) 36
$(suffix names... ) 37
$(basename names... ) 37
$(addsuffix suffix,names... ) 37
$(addprefix prefix,names... ) 37
其他函数 37
$(join list1,list2 ) 37
foreach 函数 38
if 函数 38
call函数 38
origin函数 39
shell函数 40
控制make的函数 40
$(error text ... ) 40
$(warning text ... ) 40
make 的运行 41
一、make的退出码 41
二、指定Makefile 41
三、指定目标 41
四、检查规则 42
什么是makefile什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
当然,不同产商的make各不相同,也有不同的语法,但其本质都是在“文件依赖性”上做文章,这里,仅对GNU的make进行讲述,环境是RedHat Linux 8.0,
显示全部