如何强制重新编译Makefile中的单个文件?

j r*_*riv 5 c c++ makefile autotools

这个想法是项目中有一个文件__DATE__和一个文件__TIME__.在没有明确更改其修改日期的情况下重新编译它可能会很酷.

编辑:$(shell touch -c ..)可能是一个很好的解决方案,如果只是笨拙.

zwo*_*wol 8

标准习惯用法是让目标文件(不是源文件!)依赖于一个不存在且没有规则或依赖的目标(这个目标通常称为FORCE),就像这样

always-recompile.o: FORCE
FORCE:
Run Code Online (Sandbox Code Playgroud)

但是,如果以某种方式创建名为"FORCE"的文件,这将会中断.使用GNU make,您可以使用特殊目标.PHONY,它没有此限制,但确实需要您有一个明确的规则来重建该文件:

always-recompile.o:
        $(CC) $(CFLAGS) -c -o always-recompile.o always-recompile.c

.PHONY: always-recompile.o
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅http://www.gnu.org/software/make/manual/html_node/Phony-Targets.html.