在VS項目中通過GIT生成版本號作為編譯版本號


在VS項目中通過GIT生成版本號作為編譯版本號

首先獲取git版本信息
:: git rev-parse --abbrev-ref HEAD    獲取當前分支名稱
for /f %%i in ('git rev-parse --abbrev-ref HEAD') do (set BRANCH=%%i)

:: git rev-list HEAD -n 1   獲取當前分支最近一次提交的hash值
for /f %%i in ('git rev-list HEAD -n 1') do (set COMMITID=%%i)

::git rev-list HEAD --count 獲取當前分支的提交次數
for /f %%i in ('git rev-list HEAD --count') do (set LOCALVER=%%i)

::將獲取到的版本信息按照提交次數-分支首字母-hash值的前7個字符拼接起來
set VER=%LOCALVER%-%BRANCH:~0,1%-%COMMITID:~0,7% 
用獲取的到的版本信息生成頭文件
set LIB_VER=1.0.0.1
set COMPANYNAME=zhaoliang

set temp=#ifndef _PROJECT_VERSION_H_
echo !temp!>>%VERSION_HPP_FILE%
set temp=#define _PROJECT_VERSION_H_
echo !temp!>>%VERSION_HPP_FILE%
set temp=#endif
echo !temp!>>%VERSION_HPP_FILE%
echo.>>%VERSION_HPP_FILE%

set temp=#ifndef PROJECT_VERSION_SYSTEM_FILE
echo !temp!>>%VERSION_HPP_FILE%
set temp=#define PROJECT_VERSION_SYSTEM_FILE         "%LIB_VER%,%LOCALVER%"
echo !temp!>>%VERSION_HPP_FILE%
set temp=#endif
echo !temp!>>%VERSION_HPP_FILE%
echo.>>%VERSION_HPP_FILE%

set temp=#ifndef PROJECT_VERSION_SYSTEM_PRODUCT
echo !temp!>>%VERSION_HPP_FILE%
set temp=#define PROJECT_VERSION_SYSTEM_PRODUCT				 "%LIB_VER%,%LOCALVER%"
echo !temp!>>%VERSION_HPP_FILE%
set temp=#endif
echo !temp!>>%VERSION_HPP_FILE%
echo.>>%VERSION_HPP_FILE%


set temp=#ifndef PROJECT_VERSION_DISPLAY_FILE
echo !temp!>>%VERSION_HPP_FILE%
set temp=#define PROJECT_VERSION_DISPLAY_FILE				 "%LIB_VER%,%VER%"
echo !temp!>>%VERSION_HPP_FILE%
set temp=#endif
echo !temp!>>%VERSION_HPP_FILE%
echo.>>%VERSION_HPP_FILE%

set temp=#ifndef PROJECT_VERSION_DISPLAY_PRODUCT
echo !temp!>>%VERSION_HPP_FILE%
set temp=#define PROJECT_VERSION_DISPLAY_PRODUCT			"%LIB_VER%,%VER%"
echo !temp!>>%VERSION_HPP_FILE%
set temp=#endif
echo !temp!>>%VERSION_HPP_FILE%
echo.>>%VERSION_HPP_FILE%


set temp=#ifndef PROJECT_OWNER_COMPANY_NAME
echo !temp!>>%VERSION_HPP_FILE%
set temp=#define PROJECT_OWNER_COMPANY_NAME					"%COMPANYNAME%"
echo !temp!>>%VERSION_HPP_FILE%
echo.>>%VERSION_HPP_FILE%
set temp=#ifndef PROJECT_OWNER_PRODUCT_NAME
echo !temp!>>%VERSION_HPP_FILE%
set temp=#define PROJECT_OWNER_PRODUCT_NAME					"%COMPANYNAME%"
echo !temp!>>%VERSION_HPP_FILE%
set temp=#endif
echo !temp!>>%VERSION_HPP_FILE%
echo.>>%VERSION_HPP_FILE%


set temp=#ifndef PROJECT_OWNER_LEGAL_COPYRIGHT
echo !temp!>>%VERSION_HPP_FILE%
set temp=#define PROJECT_OWNER_LEGAL_COPYRIGHT		"Copyright (C) 2007-2021 %COMPANYNAME% CO.,Ltd."
echo !temp!>>%VERSION_HPP_FILE%
set temp=#endif
echo !temp!>>%VERSION_HPP_FILE%
echo.>>%VERSION_HPP_FILE%


set temp=#endif
echo !temp!>>%VERSION_HPP_FILE%
添加版本信息

1.右鍵項目,選擇添加->資源

2.選擇Version 然后新建

3.此時會在項目中出現一個資源文件

4.右鍵資源文件,選擇查看代碼

5.導入頭文件,並將幾個宏放入版本信息

注意項目和version.h的路徑不一致,我使用相對路徑導入的

6.構建生成后會自動加入版本信息

下面的是完整的腳本


setlocal enabledelayedexpansion
set SCRIPT_DIR=%cd%\
set VERSION_HPP_FILE=%SCRIPT_DIR%\version.h
set VERSION_FILE=%SCRIPT_DIR%\version
del /Q %VERSION_HPP_FILE%
del /Q %VERSION_FILE%
::git rev-parse --abbrev-ref HEAD獲取當前分支名稱
for /f %%i in ('git rev-parse --abbrev-ref HEAD') do (set BRANCH=%%i)

::git rev-list HEAD -n 1 獲取當前分支最近一次提交的hash值
for /f %%i in ('git rev-list HEAD -n 1') do (set COMMITID=%%i)

::git rev-list HEAD --count 獲取當前分支的提交次數
for /f %%i in ('git rev-list HEAD --count') do (set LOCALVER=%%i)

::將獲取到的版本信息按照提交次數-分支首字母-hash值的前7個字符拼接起來
set VER=%LOCALVER%-%BRANCH:~0,1%-%COMMITID:~0,7%
set LIB_VER=1.0.0.1
set COMPANYNAME=zhaoliang

set temp=#ifndef _PROJECT_VERSION_H_
echo !temp!>>%VERSION_HPP_FILE%
set temp=#define _PROJECT_VERSION_H_
echo !temp!>>%VERSION_HPP_FILE%
set temp=#endif
echo !temp!>>%VERSION_HPP_FILE%
echo.>>%VERSION_HPP_FILE%

set temp=#ifndef PROJECT_VERSION_SYSTEM_FILE
echo !temp!>>%VERSION_HPP_FILE%
set temp=#define PROJECT_VERSION_SYSTEM_FILE         "%LIB_VER%,%LOCALVER%"
echo !temp!>>%VERSION_HPP_FILE%
set temp=#endif
echo !temp!>>%VERSION_HPP_FILE%
echo.>>%VERSION_HPP_FILE%

set temp=#ifndef PROJECT_VERSION_SYSTEM_PRODUCT
echo !temp!>>%VERSION_HPP_FILE%
set temp=#define PROJECT_VERSION_SYSTEM_PRODUCT				 "%LIB_VER%,%LOCALVER%"
echo !temp!>>%VERSION_HPP_FILE%
set temp=#endif
echo !temp!>>%VERSION_HPP_FILE%
echo.>>%VERSION_HPP_FILE%


set temp=#ifndef PROJECT_VERSION_DISPLAY_FILE
echo !temp!>>%VERSION_HPP_FILE%
set temp=#define PROJECT_VERSION_DISPLAY_FILE				 "%LIB_VER%,%VER%"
echo !temp!>>%VERSION_HPP_FILE%
set temp=#endif
echo !temp!>>%VERSION_HPP_FILE%
echo.>>%VERSION_HPP_FILE%

set temp=#ifndef PROJECT_VERSION_DISPLAY_PRODUCT
echo !temp!>>%VERSION_HPP_FILE%
set temp=#define PROJECT_VERSION_DISPLAY_PRODUCT			"%LIB_VER%,%VER%"
echo !temp!>>%VERSION_HPP_FILE%
set temp=#endif
echo !temp!>>%VERSION_HPP_FILE%
echo.>>%VERSION_HPP_FILE%


set temp=#ifndef PROJECT_OWNER_COMPANY_NAME
echo !temp!>>%VERSION_HPP_FILE%
set temp=#define PROJECT_OWNER_COMPANY_NAME					"%COMPANYNAME%"
echo !temp!>>%VERSION_HPP_FILE%
echo.>>%VERSION_HPP_FILE%
set temp=#ifndef PROJECT_OWNER_PRODUCT_NAME
echo !temp!>>%VERSION_HPP_FILE%
set temp=#define PROJECT_OWNER_PRODUCT_NAME					"%COMPANYNAME%"
echo !temp!>>%VERSION_HPP_FILE%
set temp=#endif
echo !temp!>>%VERSION_HPP_FILE%
echo.>>%VERSION_HPP_FILE%


set temp=#ifndef PROJECT_OWNER_LEGAL_COPYRIGHT
echo !temp!>>%VERSION_HPP_FILE%
set temp=#define PROJECT_OWNER_LEGAL_COPYRIGHT		"Copyright (C) 2007-2021 %COMPANYNAME% CO.,Ltd."
echo !temp!>>%VERSION_HPP_FILE%
set temp=#endif
echo !temp!>>%VERSION_HPP_FILE%
echo.>>%VERSION_HPP_FILE%


set temp=#endif
echo !temp!>>%VERSION_HPP_FILE%


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM