天天看點

在Windows下 Build Boost線程庫

在Windows下 Build Boost線程庫

作者:伐木工

    Boost庫中許多都是在.hpp中實作的,隻要包含路徑就可以直接就拿來使用。但是仍然有一些需要build為目标庫才能夠使用,包括Python,正規表達式和多線程庫。

    折騰了幾天,終于将Boost的多線程庫搞定了,現在就将我得方法寫出來,希望能給遇到麻煩的朋友一些參考。

   環境

   下面是我的一些安裝路徑,在安裝過程中需要根據實際情況調整:

     作業系統:Win2000

      VC6:      F:/Microsoft Visual Studio/VC98

      BOOST:    F:/boost_1_27_0

    安裝Jam

    Build Boost線程庫需要使用工具Boost.Jam。工欲善其事,必先利其器。現在先來看看如何安裝Jam。

    指令行:

    F:/boost_1_27_0> set VISUALC=""F:/Microsoft Visual Studio/VC98""

    F:/boost_1_27_0> set JAM_TOOLSET=VISUALC

    F:/boost_1_27_0/tools/jam_src>nmake -f bulids/win32-visualc.mk 

    說明:

    首先是設定環境變量VISUALC和JAM_TOOLSET。VISUALC中有兩個雙引号是為了能夠識别空格。如果你的VC安裝路徑不含空格就不必加上雙引号了: set VISUALC=F:/visual/VC98。

    接着就是使用nmake指令編譯了。不同的作業系統和不同的開發工具對應不同的mk檔案,都在tools/jam_src/builds/目錄下。

    如果你使用的VC7的話就會有問題,由于編譯過程中要使用到advapi32.lib這個檔案,VC6中是在vc98/lib/目錄下,而VC7是在platformsdk/lib/,這樣就會找不到路徑。由于沒有仔細研究Jam,不知道在哪裡修改這個路徑,隻好請大家自己動手了。

    如果不想讓系統的環境變量變得雜亂不堪,可以用set VISUAL=指令将變量清除。

    完成之後,就可以在/tools/build/jam_src下看見一個新的目錄,bin.ntx86,其中就包含了jam.exe。

    Build

    現在該開始建立Boost線程目标庫了。

    指令行:

    f:/boost_1_27_0>set Path=%PAHT:~0%;F:/boost_1_27_0/tools/build/jam_src/bin.ntx86

    f:/boost_1_27_0> set VISUALC="F:/Micors~1/VC98"

    f:/boost_1_27_0> jam -sBOOST_ROOT=. -sTOOLS=msvc

    說明:

    首先将jam.exe的路徑加入Path變量中。

    接着設定VISUALC,這裡和安裝Jam時不同,請注意,用的DOS檔案名。

    最後就是執行jam,-sBOOST_ROOT=.表示Boost的根目錄是目前目錄,-sTOOLS=msvc指明了工具名稱,這些名稱都是特定的,具體可以通路boost網站查詢。

    build需要花些時間,可能還會有不少錯誤,但可以不必管他。

    完成之後,就會發現/libs/thread/build/bin/目錄下多了多了兩個檔案夾,libboost_thread和libboost_threadmon,其中就可以找到完成lib檔案和dll檔案。

    使用

    首先在VC中加入路徑:

    tools->option中Directories屬性頁中加入:    

F:/BOOST_1_27_0/LIBS/THREAD/BUILD/BIN/LIBBOOST_THREADMON/MSVC/RELEASE/RUNTIME-LINK-DYNAMIC/THREADING-MULTI

    F:/BOOST_1_27_0/LIBS/THREAD/BUILD/BIN/LIBBOOST_THREAD/MSVC/RELEASE/RUNTIME-LINK-DYNAMIC/THREADING-MULTI

    在工程中加入lib檔案:

    在project->setting中link屬性頁加入使用的lib:libboost_thread.lib libboost_threadmon.lib

    定義BOOST_HAS_THREADS宏,不然就會有如下錯誤:Thread support is unavailable!

    選擇多線程運作庫

    在project->setting->C/C++->Code Generation中Use run-time library下拉框中選Multithreaded DLL

     好了,現在就可以體會Boost線程庫帶給我們的全新感受了。

     由于我也是剛剛才接觸Boost,對Boost和Jam工具還不是很了解,不敢妄加評論,以免贻笑大方,是以隻是簡單的列出了我方法,如果有什麼不對的地方請大家指出。

繼續閱讀