为了跟踪服务端程序文件的信息,需要在程序版本信息中添加代码库版本信息和编译时间信息。
代码库版本号可以通过代码库管理工具获得。编译时间可以通过__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