boost在windows下编译

编译包括一些常用库的编译(regex,datetime,random,system等)

编译步骤

1.下载boost https://www.boost.org/

2 运行文件夹下 boostrap.bat (window)

3.cmd打开:bjam install --prefix="E:\boost_1_69_0\vs2015" --toolset=msvc-14.0 address-model=64 --with-system --with-date_time --with-random --with=-regex link=static runtime-link=static  threading=multi

参数可以根据下面参考 编译出来的是2015上64位静态库

编译结果

boost在windows下编译_第1张图片

 

【步骤3 参数解释】

BOOST_LIB_PREFIX + BOOST_LIB_NAME + "-" + BOOST_LIB_TOOLSET + "-" + BOOST_LIB_THREAD_OPT + "-" + BOOST_LIB_RT_OPT + "-" + BOOST_LIB_VERSION  

   这些定义为:

BOOST_LIB_PREFIX: 静态库为 "lib" (否则无,是用动态链接库)

BOOST_LIB_NAME: 库的基本名称 ( 比方说 boost_regex).

BOOST_LIB_TOOLSET: 编译工具集名称 ( 比如:vc6, vc7, bcb5 )

BOOST_LIB_THREAD_OPT: 多线程为 "-mt" ,否则为空

BOOST_LIB_RT_OPT: 指示使用的运行库的后缀, 

   组合下面的一个或者更多字符:

   s 静态运行库,指的是静态链接到运行时库(不出现表示动态).

   g 调试/诊断 runtime (release if not present).

   d 调试版本 (不出现表示 release 版 ).

   p STLPort 版本.

   注:对 vc 来说,gd 总是一起出现

BOOST_LIB_VERSION: Boost 版本, Boost 版本 x.y 表示为 x_y形式.

编译:为了简化boost库的编译,boost库中带了一个用来编译的工具,名字是bjam.exe或者b2.exe.

1:运行boost下的bootstap.bat脚本就会自动生上述的两个编译工具,并且拷贝到boost目录下. 也可以进入tools/build目录下找到类似的脚本或者项目源码来编译.

2: bjam.exe的参数

Feature

Allowed values

Notes

variant

debug,release

 

link

shared,static

Determines if Boost.Build creates shared or static libraries

threading

single,multi

Cause the produced binaries to be thread-safe. This requires proper support in the source code itself.

address-model

32,64

Explicitly request either 32-bit or 64-bit code generation. This typically requires that your compiler is appropriately configured. Please refer to the section called “C++ Compilers” and your compiler documentation in case of problems.

toolset

(Depends on configuration)

The C++ compiler to use. See the section called “C++ Compilers” for a detailed list.

(Vs2008)msvc-8.0 (vs2010)msvc-10.0

include

(Arbitrary string)

Additional include paths for C and C++ compilers.

define

(Arbitrary string)

Additional macro definitions for C and C++ compilers. The string should be either SYMBOL or SYMBOL=VALUE

cxxflags

(Arbitrary string)

Custom options to pass to the C++ compiler.

cflags

(Arbitrary string)

Custom options to pass to the C compiler.

linkflags

(Arbitrary string)

Custom options to pass to the C++ linker.

runtime-link

shared,static

Determines if shared or static version of C and C++ runtimes should be used.

--build-dir=

编译的临时文件会放在builddir里(这样比较好管理,编译完就可以把它删除了)

--stagedir=

存放编译后库文件的路径,默认是stage

--build-type=complete

编译所有版本,不然只会编译一小部分版本(确切地说是相当于:variant=release, threading=multi;link=shared|static;runtime-link=shared)

variant=debug|release

决定编译什么版本(对应文件中的d 调试版本 不出现表示 release 版)

link=static|shared

决定使用静态库还是动态库。(对应文件中的BOOST_LIB_PREFIX )

threading=single|multi

决定使用单线程还是多线程库。(对应文件中的BOOST_LIB_THREAD_OPT)

runtime-link=static|shared

决定是静态还是动态链接C/C++标准库。(对应文件中的BOOST_LIB_THREAD_OPT)

--with-

只编译指定的库,如输入--with-regex就只编译regex库了。

--show-libraries

显示需要编译的库名称

 

bjam.exe --toolset=msvc-10.0 --with-date_time runtimelink=static link=static stage 

意思是要生静态库,该静态库静态链接C运行时库

生成的文件名字是:libboost_date_time-vc100-mt-sgd-1_48.lib(debug version),libboost_date_time-vc100-mt-s-1_48.lib(release version) 两个文件.

 

bjam.exe --toolset=msvc-10.0 --with-date_time runtimelink=shared link=static stage

意思是要生静态库,该静态库动态链接C运行时库

生成的文件名字是:libboost_date_time-vc100-mt-gd-1_48.lib(debug verion),libboost_date_time-vc100-mt-1_48.lib(release version) 两个文件.

 

bjam.exe --toolset=msvc-10.0 --with-date_time runtimelink=shared link=shared stage

意思是要生动态库,该动态库动态链接C运行时库

生成的文件名字是:boost_date_time-vc100-mt-gd-1_48.lib(debug version),boost_date_time-vc100-mt-1_48.lib(release version) 两个文件.

生成的dll名字是:boost_date_time-vc100-mt-gd-1_48.dll(debug version),boost_date_time-vc100-mt-1_48.dll(release version)

你可能感兴趣的:(boost)