makefiles隐式和显式规则

时间:2013-02-21 22:13:56

标签: gnu-make

我有一条规则

*.o: *.c
    gcc <certain compiler switches>

我想使用与标准规则不同的编译器开关构建一些* .c文件。

我相信我只是在第一条规则之前添加

foo.o : foo.c
foobar.o : foobar.c
    gcc <other compiler switches>

foo和foobar的显式规则是否会覆盖* .o:* .c规则?

1 个答案:

答案 0 :(得分:0)

你的makefile有很多问题。 *.o: *.c使用shell通配符,几乎肯定不是你想要的。您可能希望使用make通配符 - %.o: %.c编写模式规则。我不喜欢这些(模式规则)。我总是喜欢在makefile中非常明确。类似的东西:

SRCS := foo.c foobar.c
OBJS := ${SRCS:%.c=%.o}

${OBJS}: %.o: %.c
    gcc ${OPTS-${@D}} $< -o $@

现在,您可以根据需要定义OPTS-fooOPTS-foobar