在makefile的规则中使用通配符

举报
yd_221104950 发表于 2020/12/02 23:42:27 2020/12/02
【摘要】 make 支持三个通配符: * : 星号(*)代替了一系列的文件,如 *.c 表示所有后缀为 c 的文件。~ :波浪号(~ )在文件名中有特殊用途,如 ~/test 当前用户的家目录下的test目录(Linux环境下)。? 注意: CFILES = *.c 1 通配符同样可以用在变量中,但是 *.o 不会展开,所以CFILES的值就是 *.c 。在makefil...

make 支持三个通配符:

  • * : 星号(*)代替了一系列的文件,如 *.c 表示所有后缀为 c 的文件。
  • ~ :波浪号(~ )在文件名中有特殊用途,如 ~/test 当前用户的家目录下的test目录(Linux环境下)。
  • ?

注意:

CFILES = *.c

  
 
  • 1

通配符同样可以用在变量中,但是 *.o 不会展开,所以CFILES的值就是 *.c 。在makefile中变量,相当于 C/C++ 中的宏,执行时,只是简单地替换。如果要让通配符在变量中展开,即让CFILES变量的值是文件夹中所有 .c 文件名的集合,需要像下面这样写:

CFILES := $(wildcard *.c)

  
 
  • 1

注意:等号的写法是 :=

$(patsubst %.c,%.o,$(wildcard *.c))

  
 
  • 1

可写出编译并链接所有 .c 和 .o 文件,如:

OBJECTS := $(patsubst %.c,%.o,$(wildcard *.c))
app:$(OBJECTS) gcc -o app $(OBJECTS) .PHONY:clean
clean: -rm app $(OBJECTS)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

谢谢阅读

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/103124654

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。