Windows系統編譯BOOST

來源:互聯網
上載者:User

標籤:

1.下載並解壓至C盤boost路徑下,如C:\boost;

2.執行bootstrap.bat產生bjam.exe;

3.編譯命令如下:整個編譯用時約2小時,運行完後(彈出輸入提示符)  

        bjam stage --without-python --toolset=msvc-10.0 address-model=64 architecture=x86 --build-type=complete --stagedir="C:\boost\vc12"

參數說明: 
stage/install:stage表示只產生庫(dll和lib),install還會產生包含標頭檔的include目錄。

toolset:指定編譯器,可選的如borland、gcc、msvc(VC6)、msvc-10.0(VS20010)等。address-model=64表示編譯64位,architecture=x86架構說明

without/with:選擇不編譯/編譯哪些庫。

stagedir/prefix:stage時使用stagedir,install時使用prefix,表示編譯組建檔案的路徑。推薦給不同的IDE指定不同的目錄,如VS2013對應的是vc12,否則都產生到一個目錄下面,難以管理。

build-dir:編譯產生的中間檔案的路徑。預設就在根目錄(D:\boost\boost_1_46_0)下,目錄名為bin.v2(刪掉),等編譯完成後可將這個目錄全部刪除(沒用了),所以不需要去設定。

link:產生動態連結程式庫/靜態連結庫。產生動態連結程式庫需使用shared方式,產生靜態連結庫需使用static方式。一般boost庫可能都是以static方式編譯,因為最終發布程式帶著boost的dll感覺會比較累贅。

runtime-link:動態/靜態連結C/C++執行階段程式庫。同樣有shared和static兩種方式,這樣runtime-link和link一共可以產生4種組合方式,各人可以根據自己的需要選擇編譯。一般link只選static的話,只需要編譯2種組合即可,即link=static runtime-link=shared和link=static runtime-link=static。

threading:單/多線程編譯。一般都寫多線程程式,當然要指定multi方式了;如果需要編寫單線程程式,那麼還需要編譯單線程庫,可以使用single方式。

debug/release:編譯debug/release版本。一般都是程式的debug版本對應庫的debug版本,所以兩個都編譯。

4.設定環境。

修改環境變數:$(BOOST):  D:\boost\boost_1_46_0 
Tools -> Options -> Projects and Solutions -> VC++ Directories  
在Library files加上$(BOOST)\bin\vc10\lib

在Include files加上$(BOOST)

使用舉例:

#include<boost\thread.hpp>

此時,不用包含庫檔案,boost的auto-link機制將會自動幫我們包含對應的靜態lib。也就是說,boost預設是以靜態方式連結的,這樣我們的工程屬性最好也設為Multi-threaded (Debug)。如果想使用dll動態方式連結,需要預先定義宏:

#define BOOST_ALL_DYN_LINK

同樣,此時boost也會預設幫我們包含對應的lib。如果不想使用boost提供的auto-link機制,或者對它的自動連結不太放心的話(其實大可不必擔心),可以預先定義宏:

#define BOOST_ALL_NO_LIB

然後使用以下方法連結:

#pragma comment(lib, "boost_thread-vc100-mt-1_46.lib")或

#pragma comment(lib, "boost_thread-vc100-mt.lib")

這兩個lib其實是一樣的,實在不明白boost編譯時間為什麼每個庫都要複製一份,難道是因為後者在升級boost版本後不用改代碼?另外還有一個比較有用的宏:

#define BOOST_LIB_DIAGNOSTIC

它可以讓VC在編譯時間的output視窗中輸出程式具體連結了哪些boost庫以及連結順序。

關於boost的auto-link機制,詳細可以看看boost\config\auto_link.hpp裡的代碼,很容易可以讀懂,並且值得我們學習。

參考文檔:http://www.cnblogs.com/ComputerG/archive/2011/03/10/1979730.html

Windows系統編譯BOOST

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.