Qt 显示git版本信息

项目场景:

项目需要在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 bash

VERSION_FILE=./winver.h

VERSION_STR=$(git rev-parse --short=12 HEAD)
BRANCH_STR=$(git rev-parse --abbrev-ref HEAD)
BUILD_TIME=`date +"%Y-%m-%d[%H:%M:%S]"`
echo $BUILD_TIME
[ -n "$(git status --porcelain)" ] &&GIT_IS_DIRTY="_DI"

UPDATE_LINE_TO="#define PC_VERSION \"${BRANCH_STR}_${VERSION_STR}__${BUILD_TIME}${GIT_IS_DIRTY}\""

echo $UPDATE_LINE_TO >$VERSION_FILE

  • windows脚本 .bat
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set curdate=%%a-%%b-%%c)
for /f "tokens=1-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=_DI

set 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"

### Qt 项目中使用 Git 的教程 在软件开发过程中,版本控制系统(VCS)是不可或缺的工具之一。对于 Qt 项目,Git 是一个非常流行的选择,用于跟踪和管理代码变更。以下是关于如何在 QtCreator 中配置和使用 Git 的详细说明。 #### 配置 QtCreator 以支持 Git 1. **检查 Git 安装位置** 在 Windows 系统中,可以通过命令行工具 `cmd` 输入以下命令来确认 Git 是否已正确安装以及其路径: ```bash where git ``` 如果系统返回了 Git 的路径,则说明已经成功安装[^1]。 2. **配置 QtCreator 的 Git 路径** 打开 QtCreator,依次选择菜单项: **工具 -> 选项 -> 版本控制 -> Git** 在弹出的窗口中,填写正确的 Git 可执行文件路径,并保存设置[^1]。 #### 初始化 Git 仓库 在 QtCreator 中创建一个新的 Qt 项目后,可以通过以下步骤将其添加到 Git 版本控制中: 1. **初始化仓库** 在项目目录下打开终端,运行以下命令以初始化一个新的 Git 仓库: ```bash git init ``` 此操作将在当前目录生成一个 `.git` 文件夹,表示该目录已被 Git 管理[^4]。 2. **配置全局用户名和邮箱** 如果这是首次使用 Git,需要配置全局用户名和邮箱地址: ```bash git config --global user.email "your_email@example.com" git config --global user.name "Your Name" ``` #### 基本 Git 操作 1. **提交更改** 将项目中的所有文件添加到暂存区并提交: ```bash git add . git commit -m "Initial commit" ``` 提交信息应尽可能描述本次更改的内容,以便后续查阅[^4]。 2. **查看历史记录** 使用以下命令可以查看项目的提交历史: ```bash git log --graph --pretty=oneline --abbrev-commit ``` 该命令将显示分支合并图、每条提交记录的一行摘要以及简短的校验码[^5]。 3. **恢复到某个历史版本** 在 QtCreator 的历史浏览器中选择目标版本,并点击“Checkout”按钮。如果需要保留当前版本,可以选择创建一个新的分支[^4]。 4. **分支管理** - 创建新分支: ```bash git branch new_branch_name ``` - 切换到指定分支: ```bash git checkout new_branch_name ``` - 删除分支(仅当分支已完成合并时推荐删除): ```bash git branch -d branch_name ``` #### 示例代码 以下是一个简单的 Qt 项目结构及其对应的 Git 初始化和提交流程: ```python # 初始化 Git 仓库 git init # 添加所有文件到暂存区 git add . # 提交更改 git commit -m "Initialized Qt project structure" ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雲烟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值