翻译来自 stackoverflow 的讨论 How to use Boost in Visual Studio 2010
译文:怎样在 VS 2010 中使用 Boost [翻译]
作者:KTC
翻译:Breaker <breaker.zy_AT_gmail>
译文:
我说明下在 VS 2010 中编译 Boost 的特别事宜,包括编译一些需要外部库的可选 Boost 库
如果你使用 header-only 库,你只需解压 Boost 下载包并设置环境变量。下面指令只针对 VS,只需设置一次:
-
解压最新的 Boost 下载包(截止现在是 1.47.0)到你的目录,如
C:\boost_1_47_0
-
在 VS 中新建一个空工程
-
打开工程的 Property Manager,展开一个你选择的平台(如 Win32)上的工程配置
-
右键点击
Microsoft.Cpp.<Platform>.user
,选择Properties
打开Property Page
-
选择
VC++ Directories
-
编辑
Include Directories
,让它包含你的 Boost 源代码路径 -
针对不同的平台重复 3 ~ 6 步骤
如果你使用 Boost 中需要编译的库,并且它们不依赖外部库,那么编译步骤也较简单:
-
解压最新的 Boost 下载包(截止现在是 1.47.0)到你的目录,如
C:\boost_1_47_0
-
启动你选择平台的 Visual Studio Command Prompt,进入 Boost 的源代码目录
-
运行
bootstrap.bat
,编译生成 b2.exe,以前它叫做 bjam -
运行 b2:
Win32 平台:
b2 --toolset=msvc-10.0 --build-type=complete stage
x64 平台:
b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage
然后出去转一圈或看会儿电影
-
重复使用 header-only 库时的 2 ~ 6 步骤,以设置环境变量
-
编辑
Library Directories
,让它包含你编译生成的 Boost 库目录,如上面的示例为C:\boost_1_47_0\stage\lib
如果你想同时使用 x86 和 x64 的库文件,可重命名目录,如
<BOOST_PATH>\lib\x86
和<BOOST_PATH>\lib\x64
-
针对不同的平台重复 2 ~ 6 步骤
如果你想使用 Boost 可选库,需要额外做点事,可选库有:
-
解压最新的 bzip2 库(截止现在是 1.0.6)源代码到你的目录,如
C:\bzip2-1.0.6
-
按照之前步骤编译 Boost 库,在步骤 5 使用 b2 的
-sBZIP2_SOURCE="C:\bzip2-1.0.6"
编译选项
-
解压最新的 zlib 库(截止现在是 1.2.5)源代码到你的目录,如
C:\zlib-1.2.5
-
按照之前步骤编译 Boost 库,在步骤 5 使用 b2 的
-sZLIB_SOURCE="C:\zlib-1.2.5"
编译选项
-
安装一个 MPI 发行版,如 Microsoft Compute Cluster Pack
-
按照之前的 1 ~ 3 步骤编译 Boost 库
-
编辑
<BOOST_PATH>
下的project-config.jam
,它由 bootstrap 产生。加入一行using mpi ;
,注意 ; 前有空格 -
按照剩下步骤编译 Boost 库。如果自动检测 MPI 安装失败,则需要修改 build 文件以便指定 MPI 的查找位置
-
安装一个 Python 发行版,如 ActiveState 的 ActivePython。确保 Python 的安装路径(指 python 解释器)包含在 PATH 变量中
-
完全编译 32bit Boost.Python 库需要 32bit Python,64bit 版同理。如果你安装了多个 Python 版本,需要告诉 b2 特定 Python 版本的位置和对应关系。一个方法是编辑 bootstrap 产生的
<BOOST_PATH>
下的project-config.jam
。加入下面两行,修改为你的 Python 安装路径和版本,注意 ; 前有空格using python : 2.6 : C:\\Python\\Python26\\python ;
using python : 2.6 : C:\\Python\\Python26-x64\\python : : : <address-model>64 ;
注意,这种显式指定 Python 配置会导致 MPI 编译失败。所以如果你需要编译 MPI 库,应该分别编译两次,一次指定 Python,一次不指定
-
按照之前步骤编译 Boost 库
-
解压最新的 ICU4C 库(截止现在是 4.8)源代码到你的目录,如
C:\icu4c-4_8
-
打开
<ICU_PATH>\source\allinone
的 VS Solution 文件 -
编译你选择的平台上的 Debug 和 Release 工程配置。用 VS 2010 编译最新的 ICU4C 时,当 Debug 和 Release 配置的输出为同一目录时(默认情况),可能有问题。一种解决方法是,在一个配置(如 Debug)下编译一次,然后换为另一个配置(如 Release),再重新编译一次 (Rebuild)
-
如果编译 x64 版,需要在 x64 系统上执行编译,因为编译后阶段 (post build steps) 需要执行一些 64bit 程序
-
完成编译后,可将 source 目录删除
-
按照之前步骤编译 Boost 库,在步骤 5 使用 b2 的
-sICU_PATH="C:\icu4c-4_8"
编译选项
[END]
后记
Boost Getting Started on Windows 最新地址总是 http://www.boost.org/doc/libs/release/more/getting_started/windows.html
用 VC 2010 编译的 Boost.Python 问题:配合官方 Python 2.6.4,python26.dll 使用 VC 2008 编译,以 SxS 方式依赖 msvcr90.dll,boost_python-vc100-mt-1_47.dll 依赖 python26.dll,但没嵌入 VC 2008 CRT 的 manifest(VC 2010 默认不用 SxS 方式)。解决方法,1) 用mt.exe 手工嵌入 VC 2008 CRT 的 manifest (C:\WINDOWS\WinSxS\Manifests) 2) 拷贝 msvcr90.dll 到运行目录或 PATH