如果Makefile中有多个相同的目标,它是怎么执行的?
target1: dep1
target1: dep2
cmd2这种情况下,这两个相同的target1会被合并成
target1: dep1 dep2
cmd2sample01:
#测试多个相同目标,是如何执行的
all: test
test: a.c a.h
test: a.c
echo "02 target" #flag the second target
echo $^ #print the second target depend
执行结果:
echo a.c a.h
a.c a.h但如果第一条规则本身也带一个命令的话, makefile就无法合并, 给出警告,并用后面的规则替代前面的规则
target1: dep1
cmd1
target1: dep2
cmd2最后生成的是, 其实就是后一条替代了前一条,然后给出警告
本文探讨了Makefile中出现重复目标时的行为。当目标具有相同的名称但依赖项不同时,Makefile会尝试合并这些目标。如果目标仅有依赖项而没有命令,则会合并依赖项;若有命令则后定义的目标会覆盖前定义的目标。
1170

被折叠的 条评论
为什么被折叠?



