Makefile 生成的先决条件不触发重建
我有以下生成文件:Makefile 生成的先决条件不触发重建,makefile,Makefile,我有以下生成文件: .PHONY: version OBJECTS = $(C_SOURCES:.c=.o) %.o: %.c Makefile version.h $(call make_dir,$(dir $@)) $(CC) -c $(CFLAGS) $< -o $@ version.h: version version: $(PYTHON_EXE) build/version.py .PHONY:version 对象=$(C_源:.C=.o) %.
.PHONY: version
OBJECTS = $(C_SOURCES:.c=.o)
%.o: %.c Makefile version.h
$(call make_dir,$(dir $@))
$(CC) -c $(CFLAGS) $< -o $@
version.h: version
version:
$(PYTHON_EXE) build/version.py
.PHONY:version
对象=$(C_源:.C=.o)
%.o:%.c生成文件版本.h
$(调用make_dir,$(dir$@))
$(CC)-c$(CFLAGS)$<-o$@
版本。h:版本
版本:
$(PYTHON_EXE)build/version.py
version.h
包含当前git提交哈希<如果当前git提交哈希不同,则code>build/version.py会更新version.h
(如果提交哈希相同,则不会更改)
每次运行
make
时,我都要运行build/version.py
,因此.h版总是最新的。这目前正在工作,但如果.h版更改,则不会重新编译我的对象文件。下次运行make时,它们会被重新编译。这是因为version.h
没有与之关联的实际规则,而另一个目标告诉make it buildsversion
,而不是version.h
。因此,make认为version.h
实际上没有改变
给它一个配方,甚至是一个空配方,这样make就会明白它可能已经改变了:
version.h: version ;
(分号添加了一个空配方)