也許可以參考下列:
程式 build 之前, 讓IDE 自動執行 ctrl.sh 檔案(不能自動就手動囉) 將所需要的版本號 compiler 進去程式裡面
由於該項目沒有正式導入使用,使用者請斟酌
最大原因 version.h 檔案無法與真正的commit的一致!!!
因為 commit 後 commit次數變了 檔案指紋也變了 所以執行 ctrl.sh 後 又會生成一個新的 version 檔案...
無限循環 雞生蛋 蛋生雞的問題 我投降!!...
有需要的 可以參考下面 程序自行更改:
ctrl.sh 檔案, 在windows系統下 可能需要安裝其他軟體,
我是安裝過 codeblock 所以可以用.
檔案 ctrl.sh, version.h.template 要放在一起,執行 ctrl.sh 後,
會在src 目錄下生成version.h檔案,引入它使用即可
ctrl.sh檔案:
#!/bin/bash rm -f src/version.h BRANCH=`git branch | awk '{if ($1=="*") print $2}'` DESCRIBE=`git describe --tags --dirty='(m)' --always` git rev-list HEAD | sort > config.git-hash LOCALVER=`wc -l config.git-hash | awk '{print $1}'` if [ $LOCALVER \> 1 ] ; then VER=`git rev-list origin/master | sort | join config.git-hash - | wc -l | awk '{print $1}'` if [ $VER != $LOCALVER ] ; then VER="$VER+$(($LOCALVER-$VER))" fi if git status | grep -q "modified:" ; then VER="${VER}M" fi VER="$VER $(git rev-list HEAD -n 1 | cut -c 1-7)" GIT_VERSION="\"r$VER::$BRANCH($DESCRIBE)\"" else GIT_VERSION= VER="x" fi rm -f config.git-hash cat version.h.template | sed "s/\$FULL_VERSION/$GIT_VERSION/g" > src/version.h echo "Generated version.h" echo git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %cn %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative echo git describe --tags --dirty='(m)' --always echo git describe --tags --dirty='(m)' --match t* echo git describe --tags --dirty='(m)' --match t* --long git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %cn %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
檔案 version.h.template
#ifndef VERSION_H #define VERSION_H #define VERSION_NUMBER $FULL_VERSION #endif // VERSION_H
成果:
#ifndef VERSION_H #define VERSION_H #define VERSION_NUMBER "r8+4 ae20413::New(V1.0.1-4-gae20413(m))" #endif // VERSION_H
沒有留言:
張貼留言
手機選擇帳號後,按下發布 要再點選一次發布哦