我有一个包含大量源文件的项目,其中一些(但不是全部)必须在更改一个特定的* .h文件后重建(currtype.h)。我的makefile中有明确的规则:
%.obj: %.c
$(COMPILE)
main.obj: main.c currtype.h
$(COMPILE)
CustomHTTPApp.obj: CustomHTTPApp.c currtype.h
$(COMPILE)
CustomSNMPApp.obj: CustomSNMPApp.c currtype.h
$(COMPILE)
COMPILE = -"$(CC)" -C $< $(CFLAGS) $(INCLUDE_STACK)
但是我改变了我的currtype.h,我看到只有main.c被重新编译。如果我将CustomHTTPApp放在第一行,而main.c放在第二行,则只重新编译CustomHTTPApp等。如何解决这个问题?
答案 0 :(得分:3)
如果您只运行“make”,则会执行第一个非隐式规则,它只构建main.obj。您需要添加另一个构建所有输出文件的目标,例如叫“全部”:
all: main.obj CustomHTTPApp.obj CustomSNMPApp.obj
%.obj: %.c
$(COMPILE)
main.obj: main.c currtype.h
$(COMPILE)
CustomHTTPApp.obj: CustomHTTPApp.c currtype.h
$(COMPILE)
CustomSNMPApp.obj: CustomSNMPApp.c currtype.h
$(COMPILE)
COMPILE = "$(CC)" -C $< $(CFLAGS) $(INCLUDE_STACK)