OpenRGB终极指南:如何用一个免费开源工具统一控制所有RGB设备?
2026/5/6 13:18:27
在软件开发中,确保目标文件在源文件内容发生变化时能够正确重建是非常重要的。下面是一个经过修改的Makefile,它通过检查源文件的MD5校验和来实现这一功能:
to-md5 = $1 $(addsuffix .md5,$1) .PHONY: all all: foo.o foo.o: $(call to-md5,foo.c foo.h) %.md5: FORCE @$(if $(filter-out $(shell cat $@ 2>/dev/null),$(shell md5sum $*)),md5sum $* > $@) FORCE:这里,foo.o的依赖列表从foo.c foo.h变为$(call to-md5,foo.c foo.h)。to-md5函数会为其参数中的所有文件名添加.md5后缀。展开后,foo.o的依赖变为foo.c foo.h foo.c.md5 foo.h.md5。这意味着,如果任何一个.md5文件比foo.o新,或者foo.c或foo.h有更新,GNU make都会重新构建foo.o </