標準__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
バイナリ プログラムのチェックサム (構文など) もログに記録できます。