VS開發中自動版本號的設定-SubWCRev命令
SubWCRev這個命令是TortoiseSVN\bin下的命令;
所以前提是你的開發機需要確認安裝了SVN的客戶端,並且你本機的程式碼是SVN上down下來的,也就是程式碼需要是一個working copy;
下面說一下如何使用:
1. 假如你的工程內有一個version.h的標頭檔案,如下:
-
#ifndef VERSION_H_
-
#define VERSION_H_
-
#define VERSION_STR "1.2872"
-
#define VERSION_NUM 1,2872
-
#if 1
-
#pragma message("warning: local modification found ,please make sure source is updated,when bulid release package")
-
#endif
-
#endif
標頭檔案內VERSION_STR和VERSION_NUM兩個巨集是工程需要使用的版本號,我們需要讓第2位,也就是2872這個數字變化,每次獲取SVN上最新的Revision;
2. 準備一個version.temp.h的標頭檔案(檔名、路徑可以自由),內容如下:
-
#ifndef VERSION_H_
-
#define VERSION_H_
-
#define VERSION_STR "1.$WCREV$"
-
#define VERSION_NUM 1,$WCREV$
-
#if $WCMODS?1:0$
-
#pragma message("warning: local modification found ,please make sure source is updated,when bulid release package")
-
#endif
-
#endif
和version.h對比一下,我們可以看到我們想要變化的小版本號位置,使用了變數代替,變數含義可以參考下表;
3. 然後開始使用subwcrev.exe此命令,格式如下,
SubWCRev WorkingCopyPath [SrcVersionFile DstVersionFile] [-nmdfe]
具體命令引數及內容,可以參考原版地址
https://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-subwcrev.html
按照我個人的習慣,寫一個批處理autoversion.bat
-
echo on
-
subwcrev.exe ./ "version/version.temp.h" "version.h"
version.temp.h此檔案我放在了工程目錄下的version路徑下,subwcrev會獲取SVN的工程提交版本號,替換此檔案內的變數;然後使用temp檔案替換工程使用檔案version.h
4. VS 工程右鍵-屬性
預編譯事件中,將命令列新增上此bat的名字;(也可以在這直接寫subwcrev.exe ./ "version/version.temp.h" "version.h")
設定ok,可以使用了;