windows下編譯和安裝boost庫


boost是一個功能強大、構造精巧、跨平台、開源並且完全免費的C++程序庫。

獲取方式

boost提供源碼形式的安裝包,可以從boost官方網站下載,目前最新版本是1.59.0。
boost_download

本機上正好有boost_1_55_0的源碼包,就不下載最新版本,就以boost_1_55_0為例說明,安裝編譯方式對1.59.0版本同樣使用。

目錄結構

源碼包解壓后的目錄結構:

BOOST_1_55_0 	#boost根目錄,存放配置腳本和說明文件 
├─boost  		#所有boost庫頭文件,90%以上的boost庫源碼都在這里
├─doc  			#文檔
├─libs  		#所有組件的示例/測試/編譯代碼和說明文檔
├─more  		#庫作者相關的文檔
├─status  		#可用於測試boost庫的各個組件
└─tools 		#b2、quickbook等一些自帶的工具

boost子目錄是最為重要的目錄。以頭文件的形式分門別類存放了要使用的庫代碼:

├─accumulators		#累加器庫
├─algorithm			#算法庫
├─archive			#序列化庫
├─asio				#異步並發庫
├─assign			#賦值初始化庫
├─atomic			#原子操作庫
├─bimap				#雙向關聯數組
├─bind				#bind表達式
├─chrono			#時間處理庫
├─circular_buffer	#循環緩沖區容器
...					#其他庫
...
└─xpressive			#正則表達式庫

boost庫使用方式

boost庫大多數組件不需要編譯鏈接就可以使用,在自己的工程中直接包含頭文件即可。
如要使用boost xpressive正則庫(與regex庫不同,該正則庫不需要編譯),只需要在自己的源代碼中包含頭文件#include <boost/xpressive/xpressive_dynamic.hpp>即可。

以下是必須編譯成靜態庫或動態庫才能使用的boost庫:

The following libraries require building:
    - atomic
    - chrono
    - context
    - coroutine
    - date_time
    - exception
    - filesystem
    - graph
    - graph_parallel
    - iostreams
    - locale
    - log
    - math
    - mpi
    - program_options
    - python
    - random
    - regex
    - serialization
    - signals
    - system
    - test
    - thread
    - timer
    - wave

注: b2 --show-libraries命令可查看所有必須編譯才能使用的庫。

編譯安裝boost

首先打開命令行,進入boost源碼安裝包的根目錄,執行bootstrap.bat腳本,該腳本為boost.build系統運行准備環境,是編譯前的配置工作。

bootstrap.bat

執行完該腳本后,在boost源碼安裝包的根目錄會生成b2.exebjam.exe兩個可執行文件,這兩個文件是一樣的,只是名字不同。就是使用這兩個可執行文件來編譯安裝boost庫的。

(1) 完全安裝boost
bjam --buildtype=complete

(2) 定制安裝boost
完整編譯boost費時費力,而且這些庫在並不可能在開發中全部用到,因此只需編譯需要的庫即可。

命令:bjam --show-libraries
可查看所有必須編譯才能使用的庫。

單獨編譯安裝regex庫:

bjam stage --with-regex link=static runtime-link=shared threading=multi

編譯結果在stage\lib目錄下生成regex庫(Debug/Release):

libboost_regex-vc100-mt-1_55.lib
libboost_regex-vc100-mt-gd-1_55.lib

相關參數的含義:
stage 僅創建和安裝庫文件(不創建頭文件),可以用 –stagedir= 選項指定庫的安裝位置,默認安裝在當前目錄下的stage文件夾內。
–with- 創建和安裝指定的庫,如果使用了這個選項,則僅僅指定的庫被創建,其它庫不被創建。如果不指定這個選項,默認創建所有需要編譯安裝的庫。
link=static指定生成靜態regex庫
threading=multi指定生成多線程庫
runtime-link=shared指定動態鏈接C和C++ 運行庫

更多詳細的參數說明,請參考這篇文章

stage/install:stage表示只生成庫(dll和lib),install還會生成包含頭文件的include目錄。本人推薦使用stage,因為install生成的這個include目錄實際就是boost安裝包解壓縮后的boost目錄(E:\SDK\boost\boost,只比include目錄多幾個非hpp文件,都很小),所以可以直接使用,而且不同的IDE都可以使用同一套頭文件,這樣既節省編譯時間,也節省硬盤空間。

toolset:指定編譯器,可選的如borland、gcc、msvc(VC6)、msvc-9.0(VS2008)等。

without/with:選擇不編譯/編譯哪些庫。因為python、mpi等庫我都用不着,所以排除之。還有wave、graph、math、regex、test、program_options、serialization、signals這幾個庫編出的靜態lib都非常大,所以不需要的也可以without掉。這可以根據各人需要進行選擇,默認是全部編譯。但是需要注意,如果選擇編譯python的話,是需要python語言支持的,應該到python官方主頁http://www.python.org/下載安裝。查看boost包含庫的命令是bjam --show-libraries。

stagedir/prefix:stage時使用stagedir,install時使用prefix,表示編譯生成文件的路徑。推薦給不同的IDE指定不同的目錄,如VS2008對應的是E:\SDK\boost\bin\vc9,VC6對應的是E:\SDK\boost\bin\vc6,否則都生成到一個目錄下面,難以管理。如果使用了install參數,那么還將生成頭文件目錄,vc9對應的就是E:\SDK\boost\bin\vc9\include\boost-1_46\boost,vc6類似(光這路徑都這樣累贅,還是使用stage好)。

build-dir:編譯生成的中間文件的路徑。這個本人這里沒用到,默認就在根目錄(E:\SDK\boost)下,目錄名為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版本,所以兩個都編譯。

使用boost

將頭文件的include目錄和所依賴的庫文件添加的相應的IDE路徑下面即可。
關於靜態庫與動態庫的使用可以參見之前寫的C++靜態庫與動態庫

測試代碼:

#include <string>
#include <iostream>
#include <cassert>
#include <boost/regex.hpp>

using std::string;
using std::cout;
using std::endl;

int _tmain(int argc, _TCHAR* argv[])
{
	
	boost::regex reg("\\d{2,3}");
	assert(boost::regex_match("234",reg) == true);

	return 0;
		
}

運行OK.

參考文檔:
【Boost庫初探】Boost.Regex庫編譯、使用(32位/64位):http://m.blog.csdn.net/blog/top_along/42717223
Boost庫編譯后命名方式:http://www.cnblogs.com/yaoyansi/articles/1864702.html
Windows下編譯和安裝Boost庫的指定模塊:http://grow.sinaapp.com/?p=1155
Boost下載安裝編譯配置使用指南(含Windows、Linux以及ARM Linux):http://www.cnblogs.com/wondering/archive/2009/05/21/boost_setup.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM