標準__DATE__と__TIME__マクロは、観察したことを実行し、時間依存の文字列を返します。
これは、システム (およびおそらくコンパイラ) と、特にビルド システム (GNU makeなど)に依存します。
make考えられるアイデアは、(構文で)のような別のタイムスタンプファイルにリンクすることです
timestamp.c:
date +'const char timestamp[]="%c";' > $@
program: $(OBJECTS) timestamp.c
$(LINKER.cc) $^ -o $@ $(LIBES)
rm -f timestamp.c
次にtimestamp.o、が再生成さprogramれ、毎回再リンクされますmake(したがって、生成されたプログラムは実際に変更されますが、ほとんどのコード($(OBJECTS)変数を作成する)は変更されません)。
または、たとえば、データベースまたはテキストログファイル内にリンクの時間を記録することもできます。
program: $(OBJECTS)
$(LINKER.cc) $^ -o $@ $(LIBES)
date +'$@ built at %c' >> /var/log/build.log
(syslogに記録するlogger代わりに使用できます)date
その後、生成されprogramたものは変更されませんが、ビルドのタイムスタンプがどこかに記録されます。$(shell md5sum program)ところで、makeバイナリ プログラムのチェックサム (構文など) もログに記録できます。