作者jerohands (這就是人生啊)
看板C_and_CPP
標題Re: [問題] 是否有方法將SVN版號自動嵌入EXE中
時間Tue Aug 20 23:29:26 2013
※ 引述《descent (「雄辯是銀,沉默是金」)》之銘言:
: ※ 引述《jokingfish (ㄚ魚!!)》之銘言:
: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: : VC++ TortoiseSVN 1.7
既然你使用 VC++ & TortoiseSVN,剛好我略懂就來分享一下。
舉例,首先你可以在你的專案裡,加入一個 Header 和一個 Source,
這兩個檔案放在跟專案的位置同一個目錄。
ex. svn_version.h and svn_version.cpp (這檔案的內容如何不重要)
svn_version.h 的 code 可以如下:
#pragma once
const char* svn_revision_number(void);
回傳一個常數字串,即是你要的 SVN 版號。
另外額外寫一個 template file,舉例叫 svn_version.tmpl 好了,
讓 TortoiseSVN 幫你覆寫並覆蓋內容至 svn_version.cpp。
svn_version.tmpl:
#include "svn_version.h"
const char* svn_revision_number(void)
{
return "$WCREV$";
}
接著便是取得當前專案 Working Copy 的版號。
專案設定中,有個 Pre-Build Event,加入下列指令:
SubWCRev.exe .\ $(ProjectDir)\svn_version.tmpl $(ProjectDir)\svn_version.cpp
DONE.
希望對你有幫助 :)
: : 問題(Question):
: : 因為多人寫CODE的版控問題,希望能夠"自動"的將SVN的版本號碼,讓EXE能讀到,
: : 以便確定目前EXE檔的版本號碼....
: 不是很了解你這句話的意思。
: char version[]="$Revision$";
: 再經過 svn 後, 會換成版本編號, 不知道這是不是你要的功能。
: : (工作室內的版本比較沒問題,打開右鍵就可以看SVN版號,可是Release的時候,
: : 常常有人漏更新版號 or 亂寫.....)
: : 之前 TortoiseSVN 1.6之前,每個資料夾中都有個.svn資料夾 entries的檔案
: : 檔案內容如下
: : 10 dir 2461 http://192.168.1.117/SvnRoot/...............
: : 可以從這邊抓到版本號碼"2461" EXE執行時就去抓到這組數字顯示出來
: : 可是1.7版以後,好像整個架構和這個檔案都改掉了.....
: : 來源:http://0rz.tw/sCcsw
: : 目前想到的解決方法
: : 1. 每次SVN進版就"手動更新",內嵌於EXE檔中的版本號碼
: : 2. 將SVN版本降回1.6(可是這樣可能會有其他問題....XD)
: : 3. 其他方法(請大家賜教)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.24.242.127
→ jerohands:打完之後才發現有錯字.. 08/20 23:39
推 LPH66:文章前大寫 E 可以編輯喔 08/21 00:10
※ 編輯: jerohands 來自: 118.165.202.168 (08/21 11:36)
推 jokingfish:謝謝指導 已經取得了 謝謝^_^ 08/21 19:19