私が書いているプログラムの要件は、構成ファイルを信頼できる必要があるということです。これを達成するために、コンパイル時にファイルのハッシュを生成するためにいくつかの種類のハッシュ アルゴリズムを使用しています。これにより、ハッシュを定数として含むヘッダーが生成されます。
これに対する依存関係は非常に簡単です。私のプログラムは、それを生成するターゲットを持つ config_hash.h に依存しています。
メイクファイルは次のようになります。
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 make へのその種の依存関係をどのように説明するのか、私にはよくわかりません。
config/config_file.cfg を config_hash.h の依存関係としてリストし、config_file.cfg の.PHONYターゲットを提供しようとしましたが、成功しませんでした。明らかに、構成ファイルはオブジェクト コードの一部ではないため、gcc への -M スイッチに頼ることはできません。
助言がありますか?残念ながら、私は Makefile の多くを投稿することはできません。