BOOST的编译方法

来源:互联网 发布:python空格符表示 编辑:程序博客网 时间:2024/05/17 04:49

boost库的编译方法

本文简要说明了如何在windows环境下编译boost库。

  • 系统要求
  • 下载boost
  • 编译boost

系统要求

  • windows 7
  • visual studio 2013
  • visual studio 2015

下载boost

到boost官网http://www.boost.org下载最新的boost源码。

编译boost

约定

%BOOST_DIR%是指boost源码保存的目录

快速起步

启动命令行窗口,依次执行下列命令

cd %BOOST_DIR%bootstrap.batb2

得到的lib文件目录默认为%BOOST_DIR%\stage\lib

编译vs2013的boost库

如果你的项目是用vs2013开发的,而且你的系统中安装了两种不同版本的visual studio,那么使用快速起步一节命令编译得到的可能不是你需要的。

步骤1
启动命令行窗口
步骤2
运行visual studio 2013(即vs120)自带的vsvars32.bat
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\vsvars32.bat"
步骤3
进入boost源码目录
cd %BOOST_DIR%
步骤4
运行bootstrap,构建b2.exe
bootstrap.bat
步骤5
执行b2
b2

总结起来就是

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\vsvars32.bat"cd %BOOST_DIR%bootstrap.batb2

编译visual 2015的boost库

基本步骤和编译vs2013的boost库步骤相同。唯一的差别是vsvars32.bat不同。启动命令行窗口后,依次执行

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vsvars32.bat"cd %BOOST_DIR%bootstrap.batb2

高级用法

在项目开发过程中,可能遇到这样的编译错误:

LNK1104 无法打开文件“libboost_filesystem-vc140-mt-s-1_61.lib”

而我们采用简单的执行b2的方法并没有得到-mt-s的lib文件。

编译选项

可以通过命令行查看b2的帮助

Boost.Build 2015.07-gitProject-specific help:  Project has jamfile at JamrootUsage:  b2 [options] [properties] [install|stage]  Builds and installs Boost.Targets and Related Options:  install                 Install headers and compiled library files to the  =======                 configured locations (below).  --prefix=<PREFIX>       Install architecture independent files here.                          Default; C:\Boost on Win32                          Default; /usr/local on Unix. Linux, etc.  --exec-prefix=<EPREFIX> Install architecture dependent files here.                          Default; <PREFIX>  --libdir=<DIR>          Install library files here.                          Default; <EPREFIX>/lib  --includedir=<HDRDIR>   Install header files here.                          Default; <PREFIX>/include  stage                   Build and install only compiled library files to the  =====                   stage directory.  --stagedir=<STAGEDIR>   Install library files here                          Default; ./stageOther Options:  --build-type=<type>     Build the specified pre-defined set of variations of                          the libraries. Note, that which variants get built                          depends on what each library supports.                              -- minimal -- (default) Builds a minimal set of                              variants. On Windows, these are static                              multithreaded libraries in debug and release                              modes, using shared runtime. On Linux, these are                              static and shared multithreaded libraries in                              release mode.                              -- complete -- Build all possible variations.  --build-dir=DIR         Build in this location instead of building within                          the distribution tree. Recommended!  --show-libraries        Display the list of Boost libraries that require                          build and installation steps, and then exit.  --layout=<layout>       Determine whether to choose library names and header                          locations such that multiple versions of Boost or                          multiple compilers can be used on the same system.                              -- versioned -- Names of boost binaries include                              the Boost version number, name and version of                              the compiler and encoded build properties. Boost                              headers are installed in a subdirectory of                              <HDRDIR> whose name contains the Boost version                              number.                              -- tagged -- Names of boost binaries include the                              encoded build properties such as variant and                              threading, but do not including compiler name                              and version, or Boost version. This option is                              useful if you build several variants of Boost,                              using the same compiler.                              -- system -- Binaries names do not include the                              Boost version number or the name and version                              number of the compiler. Boost headers are                              installed directly into <HDRDIR>. This option is                              intended for system integrators building                              distribution packages.                          The default value is 'versioned' on Windows, and                          'system' on Unix.  --buildid=ID            Add the specified ID to the name of built libraries.                          The default is to not add anything.  --python-buildid=ID     Add the specified ID to the name of built libraries                          that depend on Python. The default is to not add                          anything. This ID is added in addition to --buildid.  --help                  This message.  --with-<library>        Build and install the specified <library>. If this                          option is used, only libraries specified using this                          option will be built.  --without-<library>     Do not build, stage, or install the specified                          <library>. By default, all libraries are built.Properties:  toolset=toolset         Indicate the toolset to build with.  variant=debug|release   Select the build variant  link=static|shared      Whether to build static or shared libraries  threading=single|multi  Whether to build single or multithreaded binaries  runtime-link=static|shared                          Whether to link to static or shared C and C++                          runtime.General command line usage:    b2 [options] [properties] [targets]  Options, properties and targets can be specified in any order.Important Options:  * --clean Remove targets instead of building  * -a Rebuild everything  * -n Don't execute the commands, only print them  * -d+2 Show commands as they are executed  * -d0 Suppress all informational messages  * -q Stop at first error  * --reconfigure Rerun all configuration checks  * --debug-configuration Diagnose configuration  * --debug-building Report which targets are built with what properties  * --debug-generator Diagnose generator search/executionFurther Help:  The following options can be used to obtain additional documentation.  * --help-options Print more obscure command line options.  * --help-internal Boost.Build implementation details.  * --help-doc-options Implementation details doc formatting....found 1 target...

为了得到mt-s的库,可以在b2命令中带上如下参数

 b2 --with-filesystem toolset=msvc-12.0  runtime-link=static link=static threading=multi

上面的命令行解释如下

–with-filesystem

仅编译filesystem模块

toolset=msvc-12.0

使用msvc-12.0来编译,生成的lib文件名中,将出现vc120

runtime-link=static

将静态链接C/C++的运行时库

link=static

将构建静态库

threading=multi

支持多线程库

0 0