使用qmake自动创建自定义宏(版本,git提交ID,提交分支,编译时间)。在程序发布时使用特别有效。不多说直接上代码。
项目文件(.pro)
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中使用自定义宏
#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变量可以自定义宏,而需要宏提供具体的值可以这样做:
DEFINES += MY_MACRO=\\\"'{value}'\\\"
注意:"MY_MACRO=\"之间不能带有空格
- 一些qmake平台宏
平台 | 语法 |
---|---|
Windows | win32 |
Mac | macx |
Linux | unix:!macx |
Unix | unix |
- 程序中
__DATE__
和__TIME__
为编译内置宏;
关于更多
- Qt君公众号后台回复"qmake"获取更多相关知识。