我正在编写的程序的一个要求是它必须能够信任配置文件。为了实现这一点,我使用了几种散列算法在编译时生成文件的散列,这会生成一个带有散列作为常量的标头。
对此的依赖非常简单,我的程序依赖于 config_hash.h,它有一个生成它的目标。
makefile 看起来像这样:
config_hash.h:
$(SH) genhash config/config_file.cfg > $(srcdir)/config_hash.h
$(PROGRAM): config_hash.h $(PROGRAM_DEPS)
$(CC) ... ... ...
我正在使用 gcc 的 -M 选项,这对于处理依赖关系非常有用。如果我的标题发生变化,我的程序将被重建。
我的问题是,我需要能够判断配置文件是否已更改,以便重新生成 config_hash.h。我不太确定如何解释这种对 GNU make 的依赖。
我尝试将 config/config_file.cfg 列为 config_hash.h 的依赖项,并.PHONY
为 config_file.cfg 提供目标但没有成功。显然,我不能依靠 -M 切换到 gcc 来帮助我,因为配置文件不是任何目标代码的一部分。
有什么建议么?不幸的是,我不能发布很多 Makefile,或者我会发布整个内容。