南京品牌网站开发模板,电脑培训中心,顶易云外贸平台,官网争锋项目场景#xff1a;
项目需要在APP中显示当前的版本号#xff0c;考虑到git共同开发#xff0c;显示git版本#xff0c;查找bug或恢复设置更为便捷。 使用需求#xff1a;
显示的内容包括哪个分支编译的#xff0c;版本号多少#xff0c;编译时间#xff0c;以及是否…项目场景
项目需要在APP中显示当前的版本号考虑到git共同开发显示git版本查找bug或恢复设置更为便捷。 使用需求
显示的内容包括哪个分支编译的版本号多少编译时间以及是否Release版本例如以下类似显示。
dev_6c01ges6116e__2023-08-08[16:05:37]_DI
origin_9n5ggi20ckah__2023-08-08[16:05:37] 解决方案 大致思路是通过脚本预先拉取git信息到某文件应用程序使用时拉取该文件内的数据。 linux脚本 .sh
#!/usr/bin/env bashVERSION_FILE./winver.hVERSION_STR$(git rev-parse --short12 HEAD)
BRANCH_STR$(git rev-parse --abbrev-ref HEAD)
BUILD_TIMEdate %Y-%m-%d[%H:%M:%S]
echo $BUILD_TIME
[ -n $(git status --porcelain) ] GIT_IS_DIRTY_DIUPDATE_LINE_TO#define PC_VERSION \${BRANCH_STR}_${VERSION_STR}__${BUILD_TIME}${GIT_IS_DIRTY}\echo $UPDATE_LINE_TO $VERSION_FILE
windows脚本 .bat
for /f tokens1-3 delims/ %%a in (date /t) do (set curdate%%a-%%b-%%c)
for /f tokens1-3 delims:. %%a in (echo %time%) do (set curtime%%a:%%b:%%c)
set BUILD_TIME%curdate%[%curtime%]
echo %BUILD_TIME%for /f tokens* %%a in (git rev-parse --short^12 HEAD) do (set VERSION_STR%%a)
for /f tokens* %%a in (git rev-parse --abbrev-ref HEAD) do (set BRANCH_STR%%a)set GIT_IS_DIRTY
for /f tokens* %%a in (git status --porcelain^|find /v /c ^^) do (set dc%%a)
if dc gtr 0 set GIT_IS_DIRTY_DIset UPDATE_LINE_TO#define WIN_VERSION %BRANCH_STR%_%VERSION_STR%__%BUILD_TIME%%GIT_IS_DIRTY%
echo %UPDATE_LINE_TO%winversion.h
在项目.pro中添加以下内容
versionTarget.target version.cpp
versionTarget.depends FORCE
win32 {versionTarget.commands cd $$PWD pre_build.bat
}
unix {versionTarget.commands cd $$PWD;./pre_build.sh
}PRE_TARGETDEPS version.cpp
QMAKE_EXTRA_TARGETS versionTarget
程序中直接调用
winver.h#define WIN_VERSION dev_6c01ges6116e__2023-08-08[16:05:37]_DI