VS之版本-編譯時自動生成版本-自動獲取svn版本號
阿新 • • 發佈:2019-02-15
原理
SVN中的可執行檔案SubWCRev.exe,該檔案可以檢視工作目錄的當前svn號並且儲存在變數$WCREV$
中。因此,可以先寫一個批處理,然後在專案的預生成命令中執行該批處理檔案。
VS編譯時自動化生成版本示例:
在需要新增版本的工程目錄下新建資料夾(以Setup為例), 在svn 客戶端的安裝目錄下找到Subwcrev.exe並複製到Setup資料夾下(Subwcrev.exe 可執行檔案通常在 svn 客戶端的安裝目錄下,比如TortoiseSVN 是在其安裝目錄的bin資料夾下),另外新建批處理檔案GenerateRevision.bat和生成版本模板檔案version_template.h,目錄如下圖。
SubWCRev.exe用法
#SubWCRev.exe WorkingCopyPath Template DestFile
引數說明:
WorkingCopyPath:要檢視的工作目錄路徑,一般取解決方案目錄
Template:模版檔案
DestFile:生成的目標檔案
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
GenerateRevision.bat
"SubWCRev.exe" "%~dp0.." "%~dp0version_template.h" "%~dp0../工程目錄/version.h" %1
- 1
- 1
%~dp0 標識當前目錄
%1 當前輸入的第一個引數
- 1
- 2
- 1
- 2
version_template.h
#define FILEVER 1,0,0,$WCREV$
#define PRODUCTVER 1,0,0,$WCREV$
#define STR_FILEVER "1,0,0,$WCREV$"
#define STR_PRODUCTVER "1,0,0,$WCREV$"
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
注意version_template.h的最後要加一個換行符,不然編譯時會以下錯誤,原因是version.h末尾缺少換行符
現在雙擊GenerateRevision.bat生成目標檔案,在”%~dp0../工程目錄”目錄下找到version.h。
接下來在解決方案中新增現有項xxx.rc檔案->雙擊xxx.rc檔案開啟資源檢視->選中xxx.rc有右鍵“新增資源”->選擇Version
修改xxx.rc檔案內容,還有版本的其實資訊在對應字串修改
最後把GenerateRevision.bat新增到預編譯檔案
現在自動化生成版本配置完成,每提交一次程式碼,SVN上會記錄一個版本資訊,程式在每次預編譯的時候執行會GenerateRevision.bat檔案通過SubWCRev.exe獲得最新的版本號。
感謝http://blog.csdn.net/zx3517288/article/details/50464799