プログラムの起動時に、自分がいつビルドされたか表示したい。でも、ビルド日時の取り方がわからない。
リンカのオプションかなんかでいい方法がありそうな気がするけど、とりあえず自力で表示させる方法を考える。
考えた方法
version.cのversion()で出力したりビルド日時を返却するものとする。
version.cをコンパイルするとき、-Dオプションでビルド日時の定数を設定する。
他のソースが編集されたときversion.cもコンパイルするように依存させる。
version.c
#include "version.h"
void print_builddate()
{
printf("VERSION=%s\n",VERSION);
printf("BUILD=%s\n",BUILD);
}
VERSION = "0.0.1"
CC = gcc
CFLAGS = -Wall -Wno-format-y2k
PROG = hoge
OBJS = hoge.o piyo.o
all: ${PROG}
*.o: Makefile
hoge.o: hoge.c piyo.h version.h
piyo.o: piyo.c piyo.h
# set build time
version.o: ${OBJS} version.c version.h
${CC} -c -o version.o -DVERSION="\"${VERSION}\"" -DBUILD="\"`date +'%Y-%m-%d %H:%M:%S'`\"" version.c
hoge: ${OBJS} version.o
clean:
rm -rf *.o ${PROG}