關(guān)于VS 2003 Boost的一些常見配置方法
如果大家編譯下面的程序,在鏈接時沒有報(bào)錯,就是正確鏈接了lib庫文件。通過程序的輸出結(jié)果,說明程序運(yùn)行正常,我們的庫也就是安裝正確了。 下面我們使用VS 2003 Boost來建立所有的庫。
下面我們來看一個小程序,測試一下正則表達(dá)式功能 :
- #include <iostream>
- #include <string>
- #include <iterator>
- #include <boost/regex.hpp>
- using namespace boost ;
- using namespace std ;
- int main(int argc, const char** argv)
- {
- wchar_t * strSample = L"[哈爾濱]高宏偉 2007-05-15 呵呵 Blog:http://dukejoe.yeah.net " ;
- wregex rgExpression(L"(\\[(\\S*)\\])((\\S|\\s)*)(\\d{4,}-\\d{2,}-\\d{2,})((\\S|\\s)*)", boost::regex::perl) ;
- wcmatch what ;
- wcout.imbue(locale("chs"));
- try
- {
- if(regex_match(strSample, what, rgExpression))
- {
- wcout << L"match!" << endl ;
- for (unsigned int i = 0 ; i < what.size() - 1 ; i++ )
- {
- wcout << L"what[" << i << L"] --> " << what[i] << endl ;
- }
- }
- else
- wcout << L"not match!" << endl ;
- }
- catch(...)
- {
- return -1;
- }
- return 0;
- }
VS 2003 Boost這個程序我們使用的是寬字符,主要是因?yàn)槲覀円ヅ錆h字。程序中的strSample是一個樣本,我們使用的正規(guī)表達(dá)式是rgExpression,構(gòu)造函數(shù)的boost::regex::perl說明我們使用perl語法規(guī)則。正規(guī)表達(dá)式為我們先匹配[]中間的城市名稱,然后還為我們匹配了一個帶年月日的時間格式,所以在這個程序中對我們有用的是what[2]和what[5],分別匹配出用戶的所在地(哈爾濱)和用戶的時間(2007-05-15)。
由于C語言的語法規(guī)定反斜杠為轉(zhuǎn)義字符,所以在我們構(gòu)造正規(guī)表達(dá)式時,我們要用兩個反斜杠。regex_match用來進(jìn)行實(shí)際的匹配工作。關(guān)于boost的正則表達(dá)式的用法,已經(jīng)超出了本文的范圍,本文將精力主要集中在使用這個程序驗(yàn)證boost安裝過程上。以后有機(jī)會,我盡量在Blog上再寫幾篇專門介紹Boost Regex 正規(guī)表達(dá)式使用的文篇。如果大家編譯上面的VS 2003 Boost程序,在鏈接時沒有報(bào)錯,就是正確鏈接了lib庫文件。
通過程序的輸出結(jié)果,說明程序運(yùn)行正常,我們的庫也就是安裝正確了。下面我們使用Boost.Jam來Build所有的庫。首先,我們再次打開VC.NET 2003的命令提示符,然后進(jìn)入D:\boost_1_33_1\tools\build\jam_src目錄,運(yùn)行build.bat。這時我們會生成bjam的可執(zhí)行程序。在本文中,Build過程會在jam_src下生成bin.ntx86這個子目錄?,F(xiàn)在我們來配置一下環(huán)境變量PATH,以便用bjam來build boost。配置步驟如下:右鍵我的電腦-->屬性-->高級-->環(huán)境變量,在PATH這個變量后面加入bin.ntx86所在的絕對路徑。
主要是因?yàn)橥ㄟ^上面的這些步驟,你可以初步的對Build過程中要使用的工具和簡單的Boost有一個感性的認(rèn)識。這樣的過程會幫助初學(xué)者更快的進(jìn)入角色。Boost的安裝過程其實(shí)很簡單。你建立一個d:\boost目錄,然后解壓zip文件到d:\boost_1_33_1。首先用上文中介紹的方法Build bjam的可執(zhí)行文件(參與上一段的步驟),然后進(jìn)入d:\boost_1_33_1。 在命令行執(zhí)行bjam --prefix=d:\boost install 執(zhí)行后,會在d:\boost生成所需要的所有庫和頭文件。#t#
然后你用上面介紹的配置Visual Studio.NET 2003的方法配置include目錄為 D:\boost\include\boost-1_33_1,lib目錄為D:\boost\lib。這樣就大功告成了。 我們解釋幾個重要的bjam的參數(shù),命令行的install的意思是指要安裝庫文件和頭文件。 --prefix的意思是說安裝獨(dú)立文件的路徑。
上面我們使用的是d:\boost。 --exec-prefix的意思是說安裝依賴文件的路徑。上面我們沒有輸入。默認(rèn)是prefix提供的目錄,所以在本例中,應(yīng)該是d:\boost --libdir的意思是指安裝庫文件的路徑。我們上面也沒有輸入。默認(rèn)是exec-prefix提供的目錄加lib,因?yàn)楸纠衑xec-prefix使用的是prefix的目錄,所以libdir為d:\boost\lib 另外還有一些比較常用的參數(shù)如: --includedir 這個參數(shù)是頭文件所在的目錄。默認(rèn)是PREFIX\include。
比如上例中,我們的PREFIX值是d:\boost,所以頭文件就放在d:\boost\include --with這個參數(shù)是指Build或Install單獨(dú)的庫,就好像文章前半部分我們介紹的方法,但前面我們是手工做的。如果是使用這個參數(shù),則可以自動完成指定庫的Build和Install。例如:bjam --prefix=d:\boost install --with-regex 如果在安裝過程中我們不能編譯,說明我們在VC的包含目錄里設(shè)置的目錄不正確,檢查一下,因?yàn)橛锌赡茉诮鈮哼^程中,VS 2003 Boost的根目錄由d:\boost_1_33_1變成了d:\boost_1_33_1\boost_1_33_1,這時只要把根目錄提前一級就可以了。