揮発性のメモ2

http://d.hatena.ne.jp/iww/

ビルドした時間をプログラム内で取る方法

プログラムの起動時に、自分がいつビルドされたか表示したい。でも、ビルド日時の取り方がわからない。
リンカのオプションかなんかでいい方法がありそうな気がするけど、とりあえず自力で表示させる方法を考える。

考えた方法

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);
}

Makefile

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}