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.bat
b2
得到的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.bat
b2
编译visual 2015的boost库
基本步骤和编译vs2013的boost库步骤相同。唯一的差别是vsvars32.bat不同。启动命令行窗口后,依次执行
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vsvars32.bat"
cd %BOOST_DIR%
bootstrap.bat
b2
高级用法
在项目开发过程中,可能遇到这样的编译错误:
LNK1104 无法打开文件“libboost_filesystem-vc140-mt-s-1_61.lib”
而我们采用简单的执行b2的方法并没有得到-mt-s的lib文件。
编译选项
可以通过命令行查看b2的帮助
Boost.Build 2015.07-git
Project-specific help:
Project has jamfile at Jamroot
Usage:
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; ./stage
Other 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/execution
Further 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
支持多线程库