2
我通过复制/粘贴来自Stack Overflow的建议编写了一个看起来很吓人的Makefile。但是,我已经读过,可能没有必要多次提供显式的编译器调用(例如,-O3标志无处不在)。我怎样才能简化这个Makefile?简化makefile
CFLAGS = -Weverything -Wno-padded -Wno-unused-parameter -Wno-unused-variable -Wno-sign-conversion
all: fianchetto.o util.o ttable.o movegen.o
clang -O3 $(CFLAGS) -D NDEBUG $^ -o fianchetto
debugf: fianchetto.o ttable.o movegen.o
clang -O3 $(CFLAGS) -g3 $^ -o fianchetto
clean:
rm *.o && rm *.gch & rm fianchetto && rm -rf fianchetto.dSYM
%.o: %.c
clang -O3 -c $(CFLAGS) $< -o [email protected]
fianchetto.o: fianchetto.c
ttable.o: ttable.h ttable.c
movegen.o: movegen.h movegen.c
util.o: util.h util.c
我被很多语法迷住了,并且很感谢为什么简化工作的链接或解释!
O3标志中的第一行:其纳入CFLAGS宏。 – Evert
你的'clean'命令中有一个'&';大概也应该是'&&',就像其他的一样? – Evert
除了'.o'文件名的重复和硬编码的依赖关系规则(它们看起来也可能是不完整的:除此之外,没有任何C源文件依赖于任何其他头文件),除了重复使用'.o'文件外,比它自己的?)依赖是最好的编译器生成。您不需要它们进行全新重建,只需要进行增量重建,并且可以在重建过程中获取它们。 – Kaz