Makefile - Pattern Rule作为依赖项

时间:2013-11-16 17:06:39

标签: makefile

我有以下条目的makefile。第一条规则是否取决于secon规则?那么它从第二个文件构建所有.o文件?

all:$(PROG)
$(PROG): *.o 
    $(LD) -o $(PROG) -c $<  $(LFLAGS)

%.o : %.c 
     $(CC) $(CFLAGS) -o $@ -c $< 

具体来说,如果我调用'make all',如果没有找到* .o文件,它会调用第二条规则吗? 所有其他变量都有通常的含义。

1 个答案:

答案 0 :(得分:0)

不,那不行。当您第一次运行makefile时,是否有.o个文件?不。所以表达式*.o将扩展为空。

当然,$(PROG)的配方实际上并没有像编写的那样使用任何目标文件。

你可以做这样的事情(虽然我个人更喜欢简单地手动列出文件;创建所有新文件并不常见,所以它不是很费力,而且比仅仅尝试获取文件中的每个文件更安全目录):

SOURCES := $(wildcard *.c)
OBJECTS := $(SOURCES:%.c=%.o)

$(PROG): $(OBJECTS)