首先到boost的網站上下載最新的BOOST源代碼和編譯好的JAM,地址:http://www.boost.org/users/download/ 。這裏下載的是 boost-jam-3.1.17-1-ntx86.zip 和 boost_1_37_0.tar.bz2
1、解壓boost和jam。
2、cmd下進入boost1.37的解壓目錄,運行bjam install,bjam會自動檢測系統環境,默認編譯VC版本的庫,如果存在多個VC版本,會編譯一個較高版本的庫(我係統中有VC6和VC8,最後生成的是VC8版本的庫)。
3、等待一段時間後,會在C盤根目錄下生成一個boost文件夾,裏面放着生成的頭文件以及LIB和DLL文件。
4、將C:\Boost\include\boost-1_37目錄下的boost文件夾拷貝到D:\Program Files\Microsoft Visual Studio 8\VC\include下面
5、將C:\Boost\lib下的dll文件拷貝到D:\Program Files\Microsoft Visual Studio 8\VC\bin。
5、將C:\Boost\lib下以boost開頭並且帶有boost版本號的lib文件拷貝到D:\Program Files\Microsoft Visual Studio 8\VC\lib,如boost_date_time-vc80-mt-1_37.lib。
C:\Boost\lib下的lib文件有很多是 類似的,如關於graph的有boost_graph-mgw42-mt-1_37.lib、 boost_graph-mgw42-mt.lib、libboost_graph-mgw42-mt-1_37.lib、 libboost_graph-mgw42-mt.lib。其中前面帶lib的是靜態鏈接庫,不帶 lib 的是動態連接庫,至於帶boost版本號和不帶版本號的有什麼區別暫時還不清楚。
下面用VC8創建一個C++工程測試一下,代碼如下
#include <iostream>
#include <string>
#include <boost/filesystem.hpp>
namespace fs = boost::filesystem;
/**
* 輸出C盤目錄下的所有文件和目錄名稱
*/
int main()
{
fs::path full_path("c:\\");
fs::directory_iterator end_iter;
for ( fs::directory_iterator dir_itr( full_path ); dir_itr != end_iter; ++dir_itr )
{
std::cout << dir_itr->path().filename() << std::endl;
}
}
修改D:\Program Files\Microsoft Visual Studio 8\VC\include\boost\config\auto_link.hpp, 在文件的開始地方添加:
#define BOOST_DYN_LINK
該文件中包含了自動連接lib文件的一些宏 , 利用這些宏 定義 可以在vc 8的預編譯宏中控制連接不同的lib文件。本人在VC8中預定義宏的時候老是達不到想要的效果,所以乾脆自己在源文件開始的地方定義需要的宏。通過了解此文件,你可以自己定義你自己的連接方式。http://blog.csdn.net/huangjack_1/archive/2008/10/14/3073575.aspx 這裏有較詳細的boost編譯連接介紹。
編譯運行release版, 即可打印輸出C盤根目錄下的所有文件和文件夾。
這篇文章只介紹release版本的編譯和使用,debug版的編譯我暫時沒有找到比較簡單的做法。我使用的比較笨的方式是運行bjam --build-type=complete install,然後隔段時間去看一下debug版編譯完成沒有,因爲他首先生成的是release版,那麼只要看C:\Boost\lib目錄下debug版本的動態庫是否和release版本的動態庫數目一致,如果一致表示debug版編譯完成,就可以強制終止bjam程序了。 使用debug版本的時候和release版本一樣,將相應的文件拷貝過去就可以了。
注意:編譯debug版本的過程中會生成很多obj文件,大概要佔用2到3G的空間。
附件中是我自己編譯好的debug版dll和lib,有需要的可以在這裏下載,同時也可以到http://www.boostpro.com/products/free 下載其他版本boost的安裝程序,該安裝程序會幫你下載相關的頭文件和動態庫。