為了跟蹤服務端程序文件的信息,需要在程序版本信息中添加代碼庫版本信息和編譯時間信息。
代碼庫版本號可以通過代碼庫管理工具獲得。編譯時間可以通過__DATE__和__TIME__獲得。
以git為例的一種實現。原理是通過version.tpl.h文件生成包含完整版本信息字符串的version.h文件。
version.tpl.h
#ifndef VERSION_H_
#define VERSION_H_
#define BASE_VERSION "1.0.0"
#if defined(DEBUG) || defined(_DEBUG) || defined(_DEBUG_)
#define VERSION BASE_VERSION "_debug_" COMMIT_TAG "_" __DATE__ " " __TIME__
#else
#define VERSION BASE_VERSION "_release_" COMMIT_TAG "_" __DATE__ " " __TIME__
#endif
#endif
makefile
all : version
# @for SUBDIR
in $(SUBDIRS) ;
do make -C $$SUBDIR all ; done
version :
@if ! grep "$(commit_tag)" version.h >/dev/
null ; then \
echo "update version.h" ; \
sed 's/COMMIT_TAG/"$(commit_tag)"/g' version.tpl.h > version.h ; \
fi