VC使用編譯時間作為版本號標識的方法
常用方法分兩步:
1. 得到編譯時間;
2. 設置基準時間,以編譯時間距基準時間的總天數(shù)的2倍作為版本號,適當情況還可加上初值;
其中第一步實現(xiàn)有兩種方法:
1. 直接使用系統(tǒng)宏:CString OcxTime = __DATE__;
2. 在編譯選項的Pre-link Step中調(diào)用批處理文件.bat:
@echo off echo #pragma once>"Ver.h" echo #define APP_VER_NUM "%data%">>"Ver.h"
其它網(wǎng)友的補充
使用宏__DATE__和__TIME__
CString strVersion,strBuildTime; strBuildTime = __DATE__; strBuildTime.Append(" "); strBuildTime.Append(__TIME__); COleVariant vtime(strBuildTime); vtime.ChangeType(VT_DATE); COleDateTime dateTime=vtime; SYSTEMTIME systime; VariantTimeToSystemTime(dateTime, &systime); CTime buildTime(systime); strVersion = buildTime.Format(" Builded %Y-%m-%d %H:%M:%S ");
it一夢同學的補充
一般來說,發(fā)布的正式軟件都會包含程序的svn版本號以及軟件的編譯版本和編譯時間等信息,但是這些東西并不是默認就存在的,需要我們進行一些步驟的處理。具體做法有幾種,萬變不離其宗的是,利用SVN自帶的指令獲取到版本號以及當前時間,填充模板當中的占位符,最后用替換后的模板覆蓋資源文件即可。這里只講最簡單的一種:
a. 首先需要給VC程序添加資源文件,假設程序名為Test,則資源文件為Test.rc
b. 向資源文件中添加新的資源項——version,資源文件用記事本打開,增加了如下代碼:
VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,1 PRODUCTVERSION 1,0,0,1 FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x4L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "080404b0" BEGIN VALUE "FileDescription", "Test" VALUE "FileVersion", "1, 1, 1, 0" VALUE "InternalName", "Test" VALUE "LegalCopyright", "Copyright (C) 2015" VALUE "OriginalFilename", "Test.exe" VALUE "ProductName", "Microsoft" VALUE "ProductVersion", "V1.0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x804, 1200 END END
c. 接下來創(chuàng)建一個模板,利用SVN提供的占位符WCREV獲取版本號,WCNOW獲取編譯時間。模板可以直接復制Test.rc文件,更名為Test.rc2。修改上述代碼中的ProductVersion的值即可:
VALUE "ProductVersion", "V2.1.1.$WCREV$.(Build$WCNOW$)"
d. 那么何時進行占位符的替換,隨后替換程序的資源文件Test.rc,準確的將版本號與編譯時間編譯進程序呢?VS提供了一個Build Events配置,我們選擇Pre-Build Event,增加一行代碼如下:
SubWCRev $(ProjectDir) $(ProjectDir)\Test.rc2 $(ProjectDir)\Test.rc
代碼的意思是在程序編譯之前,用SVN的腳本工具SubWCRev獲取到工程目錄的SVN號以及當前的編譯時間,替換rc2文件中的占位符,覆蓋到rc文件中。
您可能感興趣的文章
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 01-10使用OpenGL實現(xiàn)3D立體顯示的程序代碼
- 01-10使用C++實現(xiàn)全排列算法的方法詳解
- 01-10深入Main函數(shù)中的參數(shù)argc,argv的使用詳解
- 01-10C++大數(shù)模板(推薦)
- 01-10淺談C/C++中的static與extern關鍵字的使用詳解
- 01-10深入線性時間復雜度求數(shù)組中第K大數(shù)的方法詳解
- 01-10基于C語言fflush()函數(shù)的使用詳解
- 01-10解析Linux下的時間函數(shù):設置以及獲取時間的方法
- 01-10基于linux下獲取時間函數(shù)的詳解


閱讀排行
本欄相關
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-11ajax實現(xiàn)頁面的局部加載
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實例總結
- 01-10delphi制作wav文件的方法