我有这种奇怪的情况。我会解释我需要做什么
我有一堆.c文件,我需要从中获取.s文件。
我的编译顺序如下
filename.c -> filename.ll -> filename_reg.ll -> filename_reg.s
现在明显的问题是第二和第三阶段都有冲突模式,即filename.ll的模式也匹配filename_reg.ll
所以我做了在%.ll模式之前编写%_reg.ll模式的简单方法。所以它将首先匹配。
但是它找不到在它之后定义的%.ll模式。
为此做任何解决方法?
答案 0 :(得分:2)
要扩展我的评论 - 您描述的内容应该有效。 Make将始终匹配具有最短词干的规则,因此.ll
文件的两个模式规则的顺序无关紧要。如果我有:
%_reg.s: %_reg.ll
@echo "$^ -> $@" && cp $^ $@
%_reg.ll: %.ll
@echo "$^ -> $@" && cp $^ $@
%.ll: %.c
@echo "$^ -> $@" && cp $^ $@
我跑make filename.s
,我得到:
~/sandbox/tst6> make filename_reg.s
filename.c -> filename.ll
filename.ll -> filename_reg.ll
filename_reg.ll -> filename_reg.s
rm filename.ll filename_reg.ll