wildcard 的理解

wildcard 的理解原地址:http://www.groad.net/bbs/thread-2947-1-2.html  在此表示感谢wildcard用来明确表示通配符。因为在Makefile里,变量实质上就是C/C++中的宏,也就是说,如果一个表达式如objs=*.o,则objs的值就是*.o,而不是表示所有的.o文件。若果要使用通配符,那么就要使用wildcar

大家好,欢迎来到IT知识分享网。wildcard 的理解

原地址:http://www.groad.net/bbs/thread-2947-1-2.html    在此表示感谢


wildcard 用来明确表示通配符。因为在 Makefile 里,变量实质上就是 C/C++ 中的宏,也就是说,如果一个表达式如 objs = *.o ,则 objs 的值就是 *.o ,而不是表示所有的 .o 文件。若果要使用通配符,那么就要使用 wildcard 来声明 * 这个符号,使 * 符号具有通配符的功能。如下举例:

在当前目录下随意建立两个 *.c 文件,如 hello.c 和 world.c ,现在编写一个 Makefile 如下:

src = $(wildcard *.c /usr/src/linux-2.6.24/drivers/char/ip2/*.c)



all:

        @echo $(src)

运行输出:

# make

hello.c world.c /usr/src/linux-2.6.24/drivers/char/ip2/i2cmd.c /usr/src/linux-2.6.24/drivers/char/ip2/i2ellis.c /usr/src/linux-2.6.24/drivers/char/ip2/i2lib.c /usr/src/linux-2.6.24/drivers/char/ip2/ip2.mod.c /usr/src/linux-2.6.24/drivers/char/ip2/ip2base.c /usr/src/linux-2.6.24/drivers/char/ip2/ip2main.c /usr/src/linux-2.6.24/drivers/char/ip2/ip2main.mod.c

上面输出了当前目录下的两个 .c 文件以及/usr/src/linux-2.6.24/drivers/char/ip2/ 目录下所有的 .c 文件。


wildcard 也可以用来匹配变量。


比较以下几个代码(假设和 Makefile 文件同目录下已经有 include/config.mk 文件):


情况一


[Plain Text] 
纯文本查看 
复制代码
?
1
2
3
4
5
OBJTREE = /root/Makefile
src = $(wildcard $(OBJTREE)/include/config.mk)
 
all:
        
@echo $(src)



输出:

# make

/root/Makefile/include/config.mk



情况二


[Plain Text] 
纯文本查看 
复制代码
?
1
2
3
4
5
OBJTREE = .
src = $(wildcard $(OBJTREE)/include/config.mk)
 
all:
        
@echo $(src)



输出:

# make

./include/config.mk



情况三


[Plain Text] 
纯文本查看 
复制代码
?
1
2
3
4
5
OBJTREE = hello
src = $(wildcard $(OBJTREE)/include/config.mk)
 
all:
        
@echo $(src)



输出:

# make


/*输出内容为空*/



对比上面 3 种情况可以看到,wildcard 也可以用来匹配变量,即这个变量可以是任意的情况。只是注意,wildcard 的核心是“匹配存在的文件”!像上面,将 OBJTREE 变量设为 hello ,当然是不可能找到 hello/include/config.mk 这个不存在的文件的,所以它的输出为空;而将正确的路径赋给 OBJTREE 时,它最后就能够正常的输出。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/12568.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信