160 lines
5.9 KiB
C++
160 lines
5.9 KiB
C++
#include "HVersion.h"
|
|
|
|
|
|
#define JUDGE_AUX_N1(x) JUDGE_AUX_STR(x)[0]
|
|
#define JUDGE_AUX_N2(x) JUDGE_AUX_N1(x),JUDGE_AUX_STR(x)[1]
|
|
#define JUDGE_AUX_N3(x) JUDGE_AUX_N2(x),JUDGE_AUX_STR(x)[2]
|
|
#define JUDGE_AUX_N4(x) JUDGE_AUX_N3(x),JUDGE_AUX_STR(x)[3]
|
|
#define JUDGE_AUX_N5(x) JUDGE_AUX_N4(x),JUDGE_AUX_STR(x)[4]
|
|
#define JUDGE_AUX_N6(x) JUDGE_AUX_N5(x),JUDGE_AUX_STR(x)[5]
|
|
#define JUDGE_AUX_N7(x) JUDGE_AUX_N6(x),JUDGE_AUX_STR(x)[6]
|
|
#define JUDGE_AUX_N8(x) JUDGE_AUX_N7(x),JUDGE_AUX_STR(x)[7]
|
|
#define JUDGE_AUX_N9(x) JUDGE_AUX_N8(x),JUDGE_AUX_STR(x)[8]
|
|
|
|
#if JUDGE_VERSION_MAJOR >= 100000000
|
|
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N9(JUDGE_VERSION_MAJOR)
|
|
#elif JUDGE_VERSION_MAJOR >= 10000000
|
|
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N8(JUDGE_VERSION_MAJOR)
|
|
#elif JUDGE_VERSION_MAJOR >= 1000000
|
|
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N7(JUDGE_VERSION_MAJOR)
|
|
#elif JUDGE_VERSION_MAJOR >= 100000
|
|
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N6(JUDGE_VERSION_MAJOR)
|
|
#elif JUDGE_VERSION_MAJOR >= 10000
|
|
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N5(JUDGE_VERSION_MAJOR)
|
|
#elif JUDGE_VERSION_MAJOR >= 1000
|
|
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N4(JUDGE_VERSION_MAJOR)
|
|
#elif JUDGE_VERSION_MAJOR >= 100
|
|
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N3(JUDGE_VERSION_MAJOR)
|
|
#elif JUDGE_VERSION_MAJOR >= 10
|
|
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N2(JUDGE_VERSION_MAJOR)
|
|
#else
|
|
# define JUDGE_CHARS_MAJOR JUDGE_AUX_N1(JUDGE_VERSION_MAJOR)
|
|
#endif
|
|
|
|
#if JUDGE_VERSION_MINOR >= 100000000
|
|
# define JUDGE_CHARS_MINOR JUDGE_AUX_N9(JUDGE_VERSION_MINOR)
|
|
#elif JUDGE_VERSION_MINOR >= 10000000
|
|
# define JUDGE_CHARS_MINOR JUDGE_AUX_N8(JUDGE_VERSION_MINOR)
|
|
#elif JUDGE_VERSION_MINOR >= 1000000
|
|
# define JUDGE_CHARS_MINOR JUDGE_AUX_N7(JUDGE_VERSION_MINOR)
|
|
#elif JUDGE_VERSION_MINOR >= 100000
|
|
# define JUDGE_CHARS_MINOR JUDGE_AUX_N6(JUDGE_VERSION_MINOR)
|
|
#elif JUDGE_VERSION_MINOR >= 10000
|
|
# define JUDGE_CHARS_MINOR JUDGE_AUX_N5(JUDGE_VERSION_MINOR)
|
|
#elif JUDGE_VERSION_MINOR >= 1000
|
|
# define JUDGE_CHARS_MINOR JUDGE_AUX_N4(JUDGE_VERSION_MINOR)
|
|
#elif JUDGE_VERSION_MINOR >= 100
|
|
# define JUDGE_CHARS_MINOR JUDGE_AUX_N3(JUDGE_VERSION_MINOR)
|
|
#elif JUDGE_VERSION_MINOR >= 10
|
|
# define JUDGE_CHARS_MINOR JUDGE_AUX_N2(JUDGE_VERSION_MINOR)
|
|
#else
|
|
# define JUDGE_CHARS_MINOR JUDGE_AUX_N1(JUDGE_VERSION_MINOR)
|
|
#endif
|
|
|
|
#if JUDGE_VERSION_PATCH >= 100000000
|
|
# define JUDGE_CHARS_PATCH JUDGE_AUX_N9(JUDGE_VERSION_PATCH)
|
|
#elif JUDGE_VERSION_PATCH >= 10000000
|
|
# define JUDGE_CHARS_PATCH JUDGE_AUX_N8(JUDGE_VERSION_PATCH)
|
|
#elif JUDGE_VERSION_PATCH >= 1000000
|
|
# define JUDGE_CHARS_PATCH JUDGE_AUX_N7(JUDGE_VERSION_PATCH)
|
|
#elif JUDGE_VERSION_PATCH >= 100000
|
|
# define JUDGE_CHARS_PATCH JUDGE_AUX_N6(JUDGE_VERSION_PATCH)
|
|
#elif JUDGE_VERSION_PATCH >= 10000
|
|
# define JUDGE_CHARS_PATCH JUDGE_AUX_N5(JUDGE_VERSION_PATCH)
|
|
#elif JUDGE_VERSION_PATCH >= 1000
|
|
# define JUDGE_CHARS_PATCH JUDGE_AUX_N4(JUDGE_VERSION_PATCH)
|
|
#elif JUDGE_VERSION_PATCH >= 100
|
|
# define JUDGE_CHARS_PATCH JUDGE_AUX_N3(JUDGE_VERSION_PATCH)
|
|
#elif JUDGE_VERSION_PATCH >= 10
|
|
# define JUDGE_CHARS_PATCH JUDGE_AUX_N2(JUDGE_VERSION_PATCH)
|
|
#else
|
|
# define JUDGE_CHARS_PATCH JUDGE_AUX_N1(JUDGE_VERSION_PATCH)
|
|
#endif
|
|
|
|
// 获取当前的编译时间
|
|
|
|
// Example of __DATE__ string: "Jul 27 2012"
|
|
// 01234567890
|
|
#define BUILD_YEAR_CH0 (__DATE__[ 7])
|
|
#define BUILD_YEAR_CH1 (__DATE__[ 8])
|
|
#define BUILD_YEAR_CH2 (__DATE__[ 9])
|
|
#define BUILD_YEAR_CH3 (__DATE__[10])
|
|
|
|
#define BUILD_MONTH_IS_JAN (__DATE__[0] == 'J' && __DATE__[1] == 'a' && __DATE__[2] == 'n')
|
|
#define BUILD_MONTH_IS_FEB (__DATE__[0] == 'F')
|
|
#define BUILD_MONTH_IS_MAR (__DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'r')
|
|
#define BUILD_MONTH_IS_APR (__DATE__[0] == 'A' && __DATE__[1] == 'p')
|
|
#define BUILD_MONTH_IS_MAY (__DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'y')
|
|
#define BUILD_MONTH_IS_JUN (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'n')
|
|
#define BUILD_MONTH_IS_JUL (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'l')
|
|
#define BUILD_MONTH_IS_AUG (__DATE__[0] == 'A' && __DATE__[1] == 'u')
|
|
#define BUILD_MONTH_IS_SEP (__DATE__[0] == 'S')
|
|
#define BUILD_MONTH_IS_OCT (__DATE__[0] == 'O')
|
|
#define BUILD_MONTH_IS_NOV (__DATE__[0] == 'N')
|
|
#define BUILD_MONTH_IS_DEC (__DATE__[0] == 'D')
|
|
|
|
#define BUILD_MONTH_CH0 ((BUILD_MONTH_IS_OCT || BUILD_MONTH_IS_NOV || BUILD_MONTH_IS_DEC) ? '1' : '0')
|
|
#define BUILD_MONTH_CH1 \
|
|
( \
|
|
(BUILD_MONTH_IS_JAN) ? '1' : \
|
|
(BUILD_MONTH_IS_FEB) ? '2' : \
|
|
(BUILD_MONTH_IS_MAR) ? '3' : \
|
|
(BUILD_MONTH_IS_APR) ? '4' : \
|
|
(BUILD_MONTH_IS_MAY) ? '5' : \
|
|
(BUILD_MONTH_IS_JUN) ? '6' : \
|
|
(BUILD_MONTH_IS_JUL) ? '7' : \
|
|
(BUILD_MONTH_IS_AUG) ? '8' : \
|
|
(BUILD_MONTH_IS_SEP) ? '9' : \
|
|
(BUILD_MONTH_IS_OCT) ? '0' : \
|
|
(BUILD_MONTH_IS_NOV) ? '1' : \
|
|
(BUILD_MONTH_IS_DEC) ? '2' : \
|
|
/* error default */ '?' \
|
|
)
|
|
|
|
#define BUILD_DAY_CH0 ((__DATE__[4] >= '0') ? (__DATE__[4]) : '0')
|
|
#define BUILD_DAY_CH1 ( __DATE__[5] )
|
|
|
|
// Example of __TIME__ string: "19:34:54"
|
|
// 01234567
|
|
#define BUILD_HOUR_CH0 (__TIME__[0])
|
|
#define BUILD_HOUR_CH1 (__TIME__[1])
|
|
|
|
#define BUILD_MIN_CH0 (__TIME__[3])
|
|
#define BUILD_MIN_CH1 (__TIME__[4])
|
|
|
|
#define BUILD_SEC_CH0 (__TIME__[6])
|
|
#define BUILD_SEC_CH1 (__TIME__[7])
|
|
|
|
|
|
const char JUDGE_VERSION_TIME[] =
|
|
{
|
|
BUILD_YEAR_CH2, BUILD_YEAR_CH3,
|
|
BUILD_MONTH_CH0, BUILD_MONTH_CH1,
|
|
BUILD_DAY_CH0, BUILD_DAY_CH1,
|
|
BUILD_HOUR_CH0, BUILD_HOUR_CH1,
|
|
BUILD_MIN_CH0, BUILD_MIN_CH1,
|
|
BUILD_SEC_CH0, BUILD_SEC_CH1,
|
|
'\0'
|
|
};
|
|
|
|
const char JUDGE_VERSION_INFO[] =
|
|
{
|
|
JUDGE_CHARS_MAJOR, '.',
|
|
JUDGE_CHARS_MINOR, '.',
|
|
JUDGE_CHARS_PATCH, '.',
|
|
JUDGE_VERSION_TIME[0],
|
|
JUDGE_VERSION_TIME[1],
|
|
JUDGE_VERSION_TIME[2],
|
|
JUDGE_VERSION_TIME[3],
|
|
JUDGE_VERSION_TIME[4],
|
|
JUDGE_VERSION_TIME[5],
|
|
JUDGE_VERSION_TIME[6],
|
|
JUDGE_VERSION_TIME[7],
|
|
JUDGE_VERSION_TIME[8],
|
|
JUDGE_VERSION_TIME[9],
|
|
JUDGE_VERSION_TIME[10],
|
|
JUDGE_VERSION_TIME[11],
|
|
'\0'
|
|
};
|
|
|