VS開發中自動版本號的設定-SubWCRev命令

yousss發表於2018-08-30

SubWCRev這個命令是TortoiseSVN\bin下的命令;

所以前提是你的開發機需要確認安裝了SVN的客戶端,並且你本機的程式碼是SVN上down下來的,也就是程式碼需要是一個working copy;

 

下面說一下如何使用:

1. 假如你的工程內有一個version.h的標頭檔案,如下:

 


 
  1. #ifndef VERSION_H_

  2. #define VERSION_H_

  3.  
  4. #define VERSION_STR "1.2872"

  5. #define VERSION_NUM 1,2872

  6. #if 1

  7. #pragma message("warning: local modification found ,please make sure source is updated,when bulid release package")

  8. #endif

  9.  
  10. #endif

 

標頭檔案內VERSION_STRVERSION_NUM兩個巨集是工程需要使用的版本號,我們需要讓第2位,也就是2872這個數字變化,每次獲取SVN上最新的Revision;

2. 準備一個version.temp.h的標頭檔案(檔名、路徑可以自由),內容如下:

 


 
  1. #ifndef VERSION_H_

  2. #define VERSION_H_

  3.  
  4. #define VERSION_STR "1.$WCREV$"

  5. #define VERSION_NUM 1,$WCREV$

  6. #if $WCMODS?1:0$

  7. #pragma message("warning: local modification found ,please make sure source is updated,when bulid release package")

  8. #endif

  9.  
  10. #endif

 

 

和version.h對比一下,我們可以看到我們想要變化的小版本號位置,使用了變數代替,變數含義可以參考下表;

 

3. 然後開始使用subwcrev.exe此命令,格式如下,

SubWCRev WorkingCopyPath [SrcVersionFile DstVersionFile] [-nmdfe]

具體命令引數及內容,可以參考原版地址

https://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-subwcrev.html

 

按照我個人的習慣,寫一個批處理autoversion.bat

 


 
  1. echo on

  2. 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,可以使用了;

相關文章