Makfile总结在前面的三篇文章彻底掌握Makefile(一)、彻底掌握Makefile(二)和彻底掌握Makeifle(三)当中我们仔细介绍了Makefile各种使用方法,在本篇文章当中主要是对前面三篇关于makefile的文章做一个总结,方便大家快速查阅和检查 。
Makefile基础以及小技巧Make命令的工作流程当我们在命令行当中输入make的时候他的执行流程如下:
- make命令首先会在当前目录下面寻找makefile或者Makefile文件 。
 - 寻找到makefile文件之后,他会在文件当中寻找到一个编译目标 , 比如在上面的makefile文件当中他会找到
demo这个编译目标,而不是clean这个目标,因为clean是第二个编译目标 。 - 然后make会解析编译目标的依赖,如果这个依赖是其他的编译目标A的话,那么make会先完成它依赖的编译目标A的命令,如果它依赖的编译目标A也存在依赖B的话,make就会去执行依赖的B的编译命令,如此的递归下去,知道有所得依赖目标都存在了 , 才会完成第一个编译目标的编译,这个也很好理解,只有依赖文件都存在了我们才能够完成正确的编译过程 。
 
- makefile基本规则
 
编译目标:依赖文件	编译命令- 一个最基本的makefile
 
main: demo.o myprint.o	gcc demo.o myprint.o -o out	echo make 解析编译完成demo.o: demo.c	gcc -c demo.c -o demo.omyprint.o: myprint.c	gcc -c myprint.c -o myprint.oclean:	rm myprint.o demo.o out- 在makefile当中使用变量
 
cflags=-cmain: demo.o myprint.o	gcc demo.o myprint.o -o outdemo.o: demo.c	gcc $(cflags) demo.c -o demo.omyprint.o: myprint.c	gcc $(cflags) myprint.c -o myprint.oclean:	rm myprint.o demo.o out- 在makefile当中使用include
 
include submakefiledemo.o: demo.c	gcc $(cflags) demo.c -o demo.omyprint.o: myprint.c	gcc $(cflags) myprint.c -o myprint.oclean:	rm myprint.o demo.o out- 在makefile当中使用PHONY
 
cflags=-cmain: demo.o myprint.o	gcc demo.o myprint.o -o maindemo.o: demo.c	gcc $(cflags) demo.c -o demo.omyprint.o: myprint.c	gcc $(cflags) myprint.c -o myprint.oclean:	rm myprint.o demo.o main.PHONY: clean # 增加这一行- 在makefile当中使用通配符
 
cflags=-cmain: demo.o myprint.o	gcc demo.o myprint.o -o main%.o: %.c	gcc $(cflags) $<clean:	rm myprint.o demo.o main.PHONY: clean- 在makefile当中使用VPATH自动搜索
 
cflags=-cVPATH=./filesmain: demo.o myprint.o a.o b.o	gcc demo.o myprint.o a.o b.o -o maindemo.o:demo.c	gcc $(cflags) demo.c myprint.o:myprint.c	gcc $(cflags) myprint.c a.o: a.c	gcc $(cflags) $<b.o: b.c	gcc $(cflags) $<clean:	rm myprint.o demo.o main.PHONY: clean- @符号
 
main: demo.c	@echo hello world- override覆盖命令行的赋值,让makefile文件当中的变量覆盖命令行当中的变量 。
 
cc=g++main: demo.c	echo $(cc)ifeq ($(cc), gcc)	echo $(cc) = 相等的语句执行了else	echo $(cc) != 不相等的语句执行了endifcc=g++main: demo.c	echo $(cc)ifneq ($(cc), gcc)	echo $(cc) != gccelse	echo $(cc) = gccendififdef 和 ifndef判断变量是否被定义或者为空foo = 1main: demo.c	echo demoifdef foo	echo define fooelse	echo not define fooendifmain: demo.c	echo demoifdef foo	echo define fooelse	echo not define fooendifMakefile当中的函数在makefile当中除了能够使用条件表达式之外我们还可以使用函数 , 在makefile当中函数的使用规则如下:$(<函数名> <函数参数>)或者将()替换为{}函数的调用规则如上图所示,函数参数用.隔开 。字符串函数subst
$(subst <from>,<to>,<text>)- 字符串替换函数 。
 - 表示文本,这个函数会将text当中是的字符串替换为 。
 
s = ii am learning makefiless = $(subst ii, you, $(s))main: demo.c	echo demo	echo $(s)	echo $(ss)patsubst$(patsubst <pattern>,<replacement>,<text>)- pattern 表示第一个参数,用于表示如何对 text 进行匹配 。
 - replacement 表示第二个参数 表示如何对匹配的字符进行重写 。
 - patsubst在进行匹配替换的时候,会先将字符串text根据空格或者tab键或者回车换行符进行分割,然后一一的进行替换和匹配 。
 
s = a.c b.c d.c abc.c abo.css = $(patsubst %.c, %.o, $(s))main: demo.c	echo demo	echo $(s)	echo $(ss)
		  	
    
     
    
    
    
推荐阅读
           - 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
- 
              
              
            
 
          
- DophineSheduler上下游任务之间动态传参案例及易错点总结 
 
- JS 模块化-05 ES Module & 4 大规范总结 
 
- 打麻将技巧与方法总结(打麻将10句口诀) 
 
- Optional 常用方法总结 
 
- 月工作总结与计划怎么写 月工作总结与计划怎么写? 
 
- 小学数学教师教育教学总结 小学数学教育教学心得反思总结 
 
- 二年级数学模块的教学回顾总结 
 
- 初三化学知识点总结 初三化学复习知识点 
 
- 初三化学第一单元知识点总结 初三化学的元素知识点总结 
 
- 河南中考数学考点总结 河南中考数学考点整理 
 
            
              
            
          