怎样在 VS 2010 中使用 Boost [翻译]

晨曦之光 发布于 2012/05/23 11:02
阅读 556
收藏 1

翻译来自 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,只需设置一次:

  1. 解压最新的 Boost 下载包(截止现在是 1.47.0)到你的目录,如 C:\boost_1_47_0

  2. 在 VS 中新建一个空工程

  3. 打开工程的 Property Manager,展开一个你选择的平台(如 Win32)上的工程配置

  4. 右键点击 Microsoft.Cpp.<Platform>.user,选择 Properties 打开 Property Page

    VC 工程的 Property Manager

  5. 选择 VC++ Directories

  6. 编辑 Include Directories,让它包含你的 Boost 源代码路径

  7. 针对不同的平台重复 3 ~ 6 步骤

如果你使用 Boost 中需要编译的库,并且它们不依赖外部库,那么编译步骤也较简单:

  1. 解压最新的 Boost 下载包(截止现在是 1.47.0)到你的目录,如 C:\boost_1_47_0

  2. 启动你选择平台的 Visual Studio Command Prompt,进入 Boost 的源代码目录

  3. 运行 bootstrap.bat,编译生成 b2.exe,以前它叫做 bjam

  4. 运行 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

    然后出去转一圈或看会儿电影

  5. 重复使用 header-only 库时的 2 ~ 6 步骤,以设置环境变量

  6. 编辑 Library Directories,让它包含你编译生成的 Boost 库目录,如上面的示例为 C:\boost_1_47_0\stage\lib

    如果你想同时使用 x86 和 x64 的库文件,可重命名目录,如 <BOOST_PATH>\lib\x86<BOOST_PATH>\lib\x64

  7. 针对不同的平台重复 2 ~ 6 步骤

如果你想使用 Boost 可选库,需要额外做点事,可选库有:

Boost.IOStreams Bzip2 过滤器

  1. 解压最新的 bzip2 库(截止现在是 1.0.6)源代码到你的目录,如C:\bzip2-1.0.6

  2. 按照之前步骤编译 Boost 库,在步骤 5 使用 b2 的 -sBZIP2_SOURCE="C:\bzip2-1.0.6" 编译选项

Boost.IOStreams Zlib 过滤器

  1. 解压最新的 zlib 库(截止现在是 1.2.5)源代码到你的目录,如C:\zlib-1.2.5

  2. 按照之前步骤编译 Boost 库,在步骤 5 使用 b2 的 -sZLIB_SOURCE="C:\zlib-1.2.5" 编译选项

Boost.MPI

  1. 安装一个 MPI 发行版,如 Microsoft Compute Cluster Pack

  2. 按照之前的 1 ~ 3 步骤编译 Boost 库

  3. 编辑 <BOOST_PATH> 下的 project-config.jam,它由 bootstrap 产生。加入一行using mpi ;,注意 ; 前有空格

  4. 按照剩下步骤编译 Boost 库。如果自动检测 MPI 安装失败,则需要修改 build 文件以便指定 MPI 的查找位置

Boost.Python

  1. 安装一个 Python 发行版,如 ActiveState 的 ActivePython。确保 Python 的安装路径(指 python 解释器)包含在 PATH 变量中

  2. 完全编译 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,一次不指定

  3. 按照之前步骤编译 Boost 库

Boost.Regex ICU 支持

  1. 解压最新的 ICU4C 库(截止现在是 4.8)源代码到你的目录,如 C:\icu4c-4_8

  2. 打开 <ICU_PATH>\source\allinone 的 VS Solution 文件

  3. 编译你选择的平台上的 Debug 和 Release 工程配置。用 VS 2010 编译最新的 ICU4C 时,当 Debug 和 Release 配置的输出为同一目录时(默认情况),可能有问题。一种解决方法是,在一个配置(如 Debug)下编译一次,然后换为另一个配置(如 Release),再重新编译一次 (Rebuild)

  4. 如果编译 x64 版,需要在 x64 系统上执行编译,因为编译后阶段 (post build steps) 需要执行一些 64bit 程序

  5. 完成编译后,可将 source 目录删除

  6. 按照之前步骤编译 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


原文链接:http://blog.csdn.net/breakerzy/article/details/6949032
加载中
返回顶部
顶部