0

我有规矩

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

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

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

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

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

4

1 回答 1

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你认为合适的。

于 2013-04-02T14:20:47.460 回答