下のようなスクリプトをmakeファイルのどこかに書く:
GIT_COMMIT_INFO := $(shell git log -1 | sed -e '1,2s/$$/\\n/;4,$$d' | tr -d '\n')
GIT_COMMIT_ID := $(shell git log -1 | sed -n '1,1p')
GIT_COMMIT_DATE := $(shell git log -1 | sed -n '3,3p')
CPPFLAGS += -DGIT_COMMIT_ID="$(GIT_COMMIT_ID)" -DGIT_COMMIT_DATE="$(GIT_COMMIT_DATE)"
まぁちょっと,余計なものも混ざってるけど…
プログラムのソースコードの方では,コマンドラインオプションで定義している文字列を使ったコードを書いておく.
作成したいのはプログラムで,その挙動がどの時点のものでビルドされたかどうかに興味があるので,こんな感じでよいと思う.
追記
コメントで示されているように,git log
の--format
オプションで整形するとsedを使う必要が無くなる.
@ngyuki さんありがとうございます.