Makefileを使用して日付とビルド番号を使用してリンク変数を追加する方法のすばらしい例を見つけました。
OBJECTS=main.o
BUILD_NUMBER_LDFLAGS = -Xlinker --defsym -Xlinker __BUILD_DATE=$$(date +'%Y%m%d')
BUILD_NUMBER_LDFLAGS += -Xlinker --defsym -Xlinker __BUILD_NUMBER=$$(cat buildnumber.num)
a.out: $(OBJECTS) buildnumber.num
$(CC) $(LDFLAGS) $(BUILD_NUMBER_LDFLAGS) -o $@ $(OBJECTS)
buildnumber.num: $(OBJECTS)
@if ! test -f buildnumber.num; then echo 0 > buildnumber.num; fi
@echo $$(($$(cat buildnumber.num)+1)) > buildnumber.num
しかし、CMakeLists.txtでこれを繰り返す試みはすべて失敗します... :-(例:
ADD_CUSTOM_COMMAND(OUTPUT buildnumber.num
COMMAND @if ! test -f buildnumber.num; then echo 0 > buildnumber.num; fi
COMMAND @echo $$(($$(cat buildnumber.num) + 1)) > buildnumber.num)
file (GLOB_RECURSE MAIN_SOURCES FOLLOW_SYMLINKS ./src/*.cpp)
add_custom_target(buildnumber.num DEPENDS ${MAIN_SOURCES})
これをcmakeで実装する方法に非常に感謝します。