首先到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的安装程序,该安装程序会帮你下载相关的头文件和动态库。