通过对文件编译时间的获得, 可以用来定义App发布时的版本.
以下是C++, MFC的示例:
CString g_strToolDate;
CString g_strCopyRight;
void SetCompileDateTime()
{
const char *szEnglishMonth[12]= {
"Jan","Feb","Mar","Apr","May","Jun",
"Jul","Aug","Sep","Oct","Nov","Dec",
};
char szTmpDate[100]={0};
char szTmpTime[100]={0};
char szMonth[10]={0};
wchar_t szDateTime[250] = {0};
int iYear, iMonth, iDay;
int iHour,iMin,iSec;
//获取编译日期、时间
sprintf_s(szTmpDate,"%s", __DATE__); //"Sep 18 2010"
sprintf_s(szTmpTime,"%s", __TIME__); //"10:59:19"
memcpy(szMonth, szTmpDate, 3);
for (int i=0; i < 12; i++)
{
if (strncmp(szMonth, szEnglishMonth[i],3) == 0)
{
iMonth=i+1;
break;
}
}
memset(szMonth, 0, 10);
memcpy(szMonth, szTmpDate+4, 2);
iDay = atoi(szMonth);
memset(szMonth, 0, 10);
memcpy(szMonth, szTmpDate+7, 4);
iYear = atoi(szMonth);
memset(szMonth, 0, 10);
memcpy(szMonth, szTmpTime, 2);
iHour = atoi(szMonth);
memset(szMonth, 0, 10);
memcpy(szMonth, szTmpTime+3, 2);
iMin = atoi(szMonth);
memset(szMonth, 0, 10);
memcpy(szMonth, szTmpTime+6, 2);
iSec = atoi(szMonth);
wsprintf(szDateTime,TEXT("App Build@%4d-%02d-%02d_%02d:%02d:%02d"),
iYear,iMonth,iDay,iHour,iMin,iSec);
TRACE(TEXT("%s"), szDateTime);
TRACE("\n");
g_strToolDate = szDateTime;
sprintf_s(szTmpDate, "Lulixue Copyright(C) %d", iYear);
g_strCopyRight = szTmpDate;
}
在About窗口提示:
Linux下获取也差不多.