天元建设有限公司网站,泰安市最新消息今天,安阳市建设工程招标投标协会网站,网线接线顺序以下内容源于C语言中文网的学习与整理#xff0c;非原创#xff0c;如有侵权请告知删除。
Makefile 是可以使用 shell 命令的#xff0c;所以 shell 支持的通配符在 Makefile 中也是同样适用的。 shell 中使用的通配符有#xff1a;*#xff0c;?非原创如有侵权请告知删除。
Makefile 是可以使用 shell 命令的所以 shell 支持的通配符在 Makefile 中也是同样适用的。 shell 中使用的通配符有*?[...]。
通配符使用说明*匹配0个或者是任意个字符匹配任意一个字符[]我们可以指定匹配的字符放在 [] 中
通配符可以出现在模式的规则中也可以出现在命令中详细的使用情况如下。
实例 1
.PHONY:clean
clean:rm -rf *.o test
这个实例可以说明通配符可以使用在规则的命令中表示的是任意的以 .o 结尾的文件。
实例 2
test:*.cgcc -o $ $^
这个实例可以说明通配符还可以使用在规则的依赖中用来表示所有的以 .c 结尾的文件。
通配符使用在规则的依赖中时切记不能通过引用变量的方式来使用如下所示。
OBJ*.c
test:$(OBJ)gcc -o $ $^
执行make的时候会提示没有 *.c 文件。实例中我们想要表示当前目录下所有的 .c 文件但是使用的时候并没有展开而是直接识别成了一个文件文件名是 *.c。
如果一定要引用变量的话要使用函数 wildcard这个函数会帮我们展开如下。
OBJ$(wildcard *.c)
test:$(OBJ)gcc -o $ $^
和通配符 * 类似 %也是匹配任意个字符如下
test:test.o test1.ogcc -o $ $^
%.o:%.cgcc -o $ $^ %.o 把我们需要的所有的 .o 文件组合成为一个列表从列表中挨个取出的每一个文件% 表示所取出来的文件的文件名不包含后缀然后找和 %名称相同的 .c 文件作为依赖文件接着执行下面的命令直到列表所有.o文件组合成的列表中的文件全部被取出来为止。
这个属于 Makefile 中静态模规则规则存在多个目标并且不同的目标可以根据目标文件的名字来自动构造出依赖文件。跟我们的多规则目标的意思相近但是又不相同。