makefile静态模式解决多目标问题

举报
yd_221104950 发表于 2020/12/02 22:59:38 2020/12/02
【摘要】 静态模式可以更加容易地定义多目标的规则,可以让我们的规则变得更加的有弹性和灵活。格式: <targets ...> : <target-pattern> : <prereq-patterns ...> <commands> ... 123 说明: <targets …>:指定一个或多个目标文件,可使用通...

静态模式可以更加容易地定义多目标的规则,可以让我们的规则变得更加的有弹性和灵活。格式:

<targets ...> : <target-pattern> : <prereq-patterns ...>
	<commands>
...

  
 
  • 1
  • 2
  • 3

说明:

  • <targets …>:指定一个或多个目标文件,可使用通配符。
  • <target-pattern>:指定 <targets …>目标文件的模式,如%.o,表示<targets>集合中都是以.o结尾的文件。
  • <prereq-patterns …>:指定<targets …>目标文件依赖的文件的模式,如%.c ,表示 <targets …>集合中的目标文件的依赖文件都是以.c结尾的文件。

<target-pattern> (目标模式)和<prereq-patterns …>(依赖模式)中都要有 % 这个字符,如果文件名中有%可以使用反斜杠 \ 进行转义,来标明真实的 % 字符。
例子

TARGET = main.o hello.o test.o
all:$(TARGET)
$(TARGET):%.o:%.c gcc -c $< -o $@

  
 
  • 1
  • 2
  • 3
  • 4

“$<”和“$@”是自动化变量,“$<”为依赖目标集和“$@”则是目标集。
上面的$< 从这些main.c hello.c test.c依赖文件集中读取,$@从这些main.o hello.o test.o目标文件集中读取。
运行结果:

~/Desktop/testm$ ls
hello.c  main.c  Makefile  test.c
~/Desktop/testm$ make 
gcc -c main.c -o main.o
gcc -c hello.c -o hello.o
gcc -c test.c -o test.o
~/Desktop/testm$ ls
hello.c  hello.o  main.c  main.o  Makefile  test.c  test.o

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

谢谢阅读!

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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