Требование к программе, которую я пишу, должно быть в состоянии доверять файлу конфигурации. Чтобы добиться этого, я использую несколько видов алгоритмов хеширования для генерации хеша файла во время компиляции, это создает заголовок с хешами в качестве констант.
Зависимости для этого довольно просты, моя программа зависит от config_hash.h, который имеет цель, которая ее производит.
Makefile выглядит примерно так:
config_hash.h:
$(SH) genhash config/config_file.cfg > $(srcdir)/config_hash.h
$(PROGRAM): config_hash.h $(PROGRAM_DEPS)
$(CC) ... ... ...
Я использую опцию -M для gcc, которая отлично подходит для работы с зависимостями. Если мой заголовок изменяется, моя программа перестраивается.
Моя проблема в том, что мне нужно знать, изменился ли файл конфигурации, чтобы заново создать файл config_hash.h. Я не совсем уверен, как объяснить такую зависимость от GNU.
Я попытался перечислить config / config_file.cfg в качестве зависимости для config_hash.h и предоставить цель .PHONY
для config_file.cfg, но безуспешно. Очевидно, что я не могу полагаться на ключ -M для gcc, чтобы помочь мне здесь, так как файл конфигурации не является частью какого-либо объектного кода.
Есть предложения? К сожалению, я не могу опубликовать большую часть Makefile, или я бы просто опубликовал все это.