- 版本:Boost 1.66.0
Windows库编译
官网指南:直接执行bootstrap.bat处理文件即可,可以我却遇到一堆的问题。
- 环境:Windows 10 + Visual Studio 2017
Boost编译出来库命名
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形式.
编译命令:
.\b2.exe -j8 --with-filesystem threading=multi link=static runtime-link=shared stage
错误列表
-
cl 命令无法识别:编译器命令不能识别
-
头文件找不到:
boost_1_66_0\tools\build\src\engine\jam.h(71): fatal error C1034: ctype.h: no include path set
解决方法:通过跟踪bootstrap.bat文件到tools\build\src\engine\build.bat文件,发现如下内容:
ECHO ###ECHO ### %1ECHO ###ECHO ### You can specify the toolset as the argument, i.e.:ECHO ### .\build.bat msvcECHO ###ECHO ### Toolsets supported by this script are: borland, como, gcc,ECHO ### gcc-nocygwin, intel-win32, metrowerks, mingw, msvc, vc7, vc8,ECHO ### vc9, vc10, vc11, vc12, vc14, vc141ECHO ###ECHO ### If you have Visual Studio 2017 installed you will need either updateECHO ### the Visual Studio 2017 installer or run from VS 2017 Command PromptECHO ### as we where unable to detect your toolset installation.ECHO ###
即要从VS2017的命令行工具中去运行才能找到正确的环境配置。
在菜单Visual Studio 2017目录下找到:x86 Native Tools Command Prompt for VS2017打开,然后切换到Boost目录执行:
call .\bootstrap.bat
将会生成文件:b2.exe bjam.exe两个文件。可以执行如下命令查看说明:
.\b2.exe --help
通过如下命令安装boost:
.\b2.exe link=static runtime-link=static install
默认安装到C:\Boost目录下,大小约1.8GB。
Boost的使用
-
库链接问题:带lib前缀的库和不带lib前缀的库
在编译使用Caffe框架的应用时,遇到如下链接错误:
无法打开文件“libboost_date_time-vc-141-mt-1_61.lib”
可是在指定的目录下我们有不带lib前缀的库:boost_date_time-vc-141-mt-1_61.lib。
解决方法是添加Boost的库链接宏: BOOST_ALL_NO_LIB。