使用qmake为程序添加版本信息

使用qmake自动创建自定义宏(版本,git提交ID,提交分支,编译时间)。在程序发布时使用特别有效。不多说直接上代码

项目文件(.pro)

1
2
3
4
5
6
7
8
9
10
DEFINES += APP_VERSION=\\\"'v1.0.0'\\\"

win32 {
DEFINES += APP_COMMIT_ID=\\\"'$$system(cmd /c git rev-parse HEAD)'\\\"
DEFINES += APP_BRANCH_NAME=\\\"'$$system(cmd /c git symbolic-ref --short -q HEAD)'\\\"
}
else {
DEFINES += APP_COMMIT_ID=\\\"'$(shell git rev-parse HEAD)'\\\"
DEFINES += APP_BRANCH_NAME=\\\"'$(shell git symbolic-ref --short -q HEAD)'\\\"
}

在main.cpp中使用自定义宏

1
2
3
4
5
6
7
8
9
10
#include <QDebug>

int main(int argc, char *argv[])
{
qDebug() << "App version: " << APP_VERSION;
qDebug() << "App build time: " << __DATE__ << __TIME__;
qDebug() << "App commit id: " << APP_COMMIT_ID;
qDebug() << "App branch name: " << APP_BRANCH_NAME;
return 0;
}

相关知识

  • 使用qmake的DEFINES变量可以自定义宏,而需要宏提供具体的值可以这样做:

    1
    2
    DEFINES  += MY_MACRO=\\\"'{value}'\\\"
    注意:"MY_MACRO=\"之间不能带有空格
  • 一些qmake平台宏

平台 语法
Windows win32
Mac macx
Linux unix:!macx
Unix unix
  • 程序中__DATE____TIME__为编译内置宏;

关于更多

  • Qt君公众号后台回复”qmake“获取更多相关知识。