QT自动获取编译日期与git commit ID
有时候我们希望软件版本号中携带日期,而每次手动修改日期比较麻烦,可以利用__DATE__来自动获取编译时的日期。另外软件也可以自动获取git 的commit ID,方便代码回溯和对齐。
1. 自动获取编译日期
直接上代码。需要注意的是,当日期不满10时,例如9月4日,__DATE__字符中会有两个空格:"Sep 4 2024",在Sep和4之间有两个空格,因此需要先将多个空格合并为一个空格。
QString Mytool::getBuildDate()
{
const QString strMonth[12] = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
QString buildDate;
QString date = __DATE__;
int year, month, day;
int i = 0;
date = date.replace(" ", " ");
buildDate = buildDate.append(date.section(" ", 2, 2));
for(i = 0; i < 12; i++)
{
if(date.contains(strMonth[i]))
{
break;
}
}
month = i + 1;
buildDate.append(QString::number(month, 10).rightJustified(2, '0'));
buildDate.append(date.section(" ", 1, 1).rightJustified(2, '0'));
return buildDate;
}
使用方式:
qDebug() << "Date:" << MyTool:getBuildData();
输出为Data:20240904
2. 获取Git Commit ID
工程使用了qmake,首先在工程的.pro文件中加入以下代码,第一行的../.git表示git仓库文件所在目录。
exists (../.git) {
COMMIT_ID = $$system(git rev-parse --short HEAD)
GIT_COMMIT_ID = "$${COMMIT_ID}"
}else{
GIT_COMMIT_ID = debugver
}
DEFINES += GIT_COMMIT_ID=\"\\\"$$GIT_COMMIT_ID\\\"\"
代码文件里获取git commit id:
QString MyTool::getGitShortCommitId(void)
{
QString commitID = GIT_COMMIT_ID;
return commitID;
}