深圳专业网站制作公司排名,注册网站平台要多少钱,东莞常平天气预报15天查询,建立类似淘宝的网站(1) wildcard函数
作用是查找指定目录下指定类型的文件#xff0c;并最终返回一个环境变量#xff0c;需要用$取值赋值给另一个环境变量#xff01;该函数只有一个参数#xff0c;如取出当前目录下的所有.c文件#xff0c;并赋值给allc普通变量#xff1a; allc$(wildc…(1) wildcard函数
作用是查找指定目录下指定类型的文件并最终返回一个环境变量需要用$取值赋值给另一个环境变量该函数只有一个参数如取出当前目录下的所有.c文件并赋值给allc普通变量 allc$(wildcard ./*.c)。
(2) patsubst函数
作用是更换文件的后缀格式共有三个参数。如将allc的所有.c的文件更换为.o的文件 allo$(patsubst %.c,%.o,$(allc))。
注意以上两个函数的返回值都为变量值都必须用$取值。makefile中的所有函数都必须要有返回值。
allo1$(patsubst %.c,./bin/%.o,$(allc)) 将替换后生成的.o文件都存放在./bin/中指出路径。 (3)不带依赖条件的规则
对于没有依赖条件只有目标和命令的规则说明为了实现该目标不需要任何依赖条件直接执行命令即可。makefile直接执行命令。下面举例说明 再次强调一点每一行的命令前必须有一个tab缩进这是makefile识别命令的判断符号。
clean: -mkdir /aa //加-表示该条命令执行失败了也会继续向下执行下一条命令 rm -f $(allo) $(target) hello: //举例说明这一项在以后中不要 echo hello, makefile
[rootlocalhost src]# make clean //只是执行clea后面的命令即可
[rootlocalhost src]# make hello //只是执行hello后面的命令即可
如果在makefile文件目录中有一个以clean或hello名字为名的文件即相同了则make clean和make hello不会执行命令需要进行伪目标声明即
.PHONY:clean //伪目标的声明
clean: -mkdir /aa //加-表示该条命令执行失败了也会继续向下执行下一条命令 rm -f $(allo) $(target) .PHONY:hello //伪目标的声明
hello: //举例说明这一项在以后中不要 echo hello, makefile
最后如果makefile文件不是以makefile或Makefile为名字需要加上-f参数make -f filename 下面给出之前例子makefile书写的最终版即把一个规则两个变量和三个函数结合
[rootlocalhost src]# ls a add.c div.c main.c makefile mul.c sub.c[rootlocalhost src]# vim zsxmakefile
allc$(wildcard ./*.c) //获取所有的.c文件 obj$(patsubst %.c,%.o,$(allc)) //更换为.o文件取得目标文件 targetzsx
$(target):$(obj) $(CC) -ggdb3 $^ -o $
main.o:main.c $(CC) -pedantic -Wall -pipe -c $^ -o $ -I ../include
%.o:%.c $(CC) -pedantic -Wall -pipe -c $ -o $ .PHONY:clean1 //伪目标的声明
clean1: -mkdir b //-代表该条命令执行失败了也会继续向下执行下一条命令 rm -f $(obj) $(target)
.PHONY:hello //伪目标的声明
hello: echo hello, makefile [rootlocalhost src]# rm -f makefile [rootlocalhost src]# ls a add.c div.c main.c mul.c sub.c zsxmakefile[rootlocalhost src]# make -f zsxmakefile //此时需要加-f参数 cc -pedantic -Wall -pipe -c mul.c -o mul.o cc -pedantic -Wall -pipe -c main.c -o main.o -I ../include cc -pedantic -Wall -pipe -c add.c -o add.o cc -pedantic -Wall -pipe -c div.c -o div.o cc -pedantic -Wall -pipe -c sub.c -o sub.o cc -ggdb3 mul.o main.o add.o div.o sub.o -o zsx [rootlocalhost src]# ls a add.c add.o div.c div.o main.c main.o mul.c mul.o sub.c sub.o zsx zsxmakefile[rootlocalhost src]# make -f zsxmakefile clean1 //注意使用方法 如果文件名字是makefile或Makefile则直接为make clean1 mkdir b rm -f ./mul.o ./main.o ./add.o ./div.o ./sub.o zsx [rootlocalhost src]# ls a add.c b div.c main.c mul.c sub.c zsxmakefile[rootlocalhost src]# make -f zsxmakefile hello //注意使用方法 echo hello, makefile hello, makefile //注意区分make、make clean、make hello的作用