
Makefile中通配符*与%的区别是什么?
Makefile中通配符*与%,*表示任意字符,%表示匹配零或若干字符,这不是一样的意思吗?弄不明白他们的区别在哪里,是否可以通用?...
Makefile中通配符*与%,*表示任意字符,%表示匹配零或若干字符,这不是一样的意思吗?弄不明白他们的区别在哪里,是否可以通用?
展开
2个回答
展开全部
此两者均为通配符,但更准确的讲,%为Makefile规则通配符,一般用于规则描述,如
%.o:%c
$(CC) $< -o $@
表示所有的目标文件及其依赖文件,或者
$(filter %.c ,SOURCES)
此处SOURCES表示包含.c .cc .cpp等多类型源文件,该过滤器函数将c文件过滤出来,而%.c即为此过滤器规则。
通配符*则不具备上述功能。尤其是在Makefile,当变量定义或者函数调用时,该通配符的展开功能就失效了,即不能正常使用了,此时需要借助wildcard函数。二者应用范围不同。
%.o:%c
$(CC) $< -o $@
表示所有的目标文件及其依赖文件,或者
$(filter %.c ,SOURCES)
此处SOURCES表示包含.c .cc .cpp等多类型源文件,该过滤器函数将c文件过滤出来,而%.c即为此过滤器规则。
通配符*则不具备上述功能。尤其是在Makefile,当变量定义或者函数调用时,该通配符的展开功能就失效了,即不能正常使用了,此时需要借助wildcard函数。二者应用范围不同。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询