boost 编译
boost 编译
该文介绍 boost
编译。
boost 编译
1. Windows
1.1. 下载
点击下方网址下载一个自己想要的版本即可。
1.1.1. 最新版本
Github:https://github.com/boostorg/boost
1.1.2. 历史版本
官网:https://www.boost.org/users/history/
1.2. 环境
- Visual Studio 2022
VS2022
默认以 MSVC143
编译如果想要指定版本需要在 Visual Studio Install
下载对应的 MSVC
,VS2022
最低支持 VS2015 MSVC140
,下图是下载 VS2017 MSVC141
的编译工具链。
Visual Studio 版本 | VC 版本(MSVC 版本) | 内部版本号(_MSC_VER) |
---|---|---|
Visual Studio 2022 | VC 17 (MSVC 14.3x) | 1930+ (e.g., 1931, 1932) |
Visual Studio 2019 | VC 16 (MSVC 14.2x) | 1920+ (e.g., 1928, 1929) |
Visual Studio 2017 | VC 15 (MSVC 14.1x) | 1910+ (e.g., 1911, 1916) |
Visual Studio 2015 | VC 14 (MSVC 14.0) | 1900 |
1.3. 编译
1.3.1. 直接编译
打开 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2022\Visual Studio Tools\VC
路径下想要使用的 MSVC
版本。
将下载文件 boost_1_70_0.zip
解压,进入 boost_1_70_0
目录,编译即可。
1
2
3
4
# 生成 b2.exe
bootstrap.bat
# 编译生成库文件
b2.exe
可能需要指定 MSVC
版本 bootstrap.bat
才能执行(boost版本可能不支持MSVC版本)
1
bootstrap.bat vc141
1.3.2. 选项编译
如果想要 VS
高版本编译低版本,需要设置一些参数。1
1
2
# VS 修改版本
"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86 -vcvars_ver=14.1
其中 2022
是版本,Community
是类型,x86
指定 32
位,-vcvars_ver=14.1
指定 MSVC141
。
生成编译程序
1
2
3
bootstrap.bat
# 或者
bootstrap.bat vc141
1
2
# 编译
b2.exe -j8 toolset=msvc-14.1 architecture=x86 address-model=32 variant=release,debug threading=multi --build-type=complete stage
参数 | 说明 |
---|---|
-jN | 指定并行编译的线程数(例如 -j8 表示使用 8 个线程)。 |
--help | 显示帮助信息。 |
--version | 显示 Boost.Build 的版本信息。 |
--debug-configuration | 显示配置过程中的调试信息。 |
--clean | 清理生成的中间文件和目标文件。 |
toolset=<toolset> | 指定编译器工具集(例如 msvc-14.1 、gcc 、clang )。 |
architecture=<arch> | 指定目标架构(例如 x86 、x64 、arm )。 |
address-model=<bits> | 指定地址模型(例如 32 或 64 )。 |
variant=<variant> | 指定生成的库类型(例如 release 、debug ,可以同时指定多个)。 |
link=<type> | 指定链接类型(static 生成静态库,shared 生成动态库)。 |
runtime-link=<type> | 指定运行时库的链接类型(static 或 shared )。 |
threading=<type> | 指定线程支持(multi 支持多线程,single 不支持多线程)。 |
--build-type=<type> | 指定编译类型(complete 生成所有可能的组合,minimal 生成最小集)。 |
--with-<library> | 指定编译某个特定的 Boost 库(例如 --with-system )。 |
--without-<library> | 指定排除某个 Boost 库(例如 --without-python )。 |
cxxflags=<flags> | 指定额外的编译器标志(例如 -std=c++17 )。 |
define=<macro> | 定义预处理器宏(例如 define=BOOST_ALL_NO_LIB )。 |
stagedir=<path> | 指定库文件的输出目录(默认是 stage/lib )。 |
prefix=<path> | 指定安装目录(与 install 一起使用)。 |
build-dir=<path> | 指定编译中间文件的目录。 |
target=<target> | 指定编译目标(例如 boost_system )。 |
install | 将编译生成的库安装到系统目录(与 prefix 一起使用)。 |
stage | 将编译生成的库输出到 stage/lib 目录(默认行为)。 |
--reconfigure | 强制重新配置 Boost.Build。 |
--abbreviate-paths | 缩短路径名以解决 Windows 上的路径长度限制问题。 |
--disable-icu | 禁用 ICU 支持(用于 Boost.Locale 等库)。 |
--enable-icu | 启用 ICU 支持。 |
1.4. 库命名规则
以 libboost_atomic-vc141-mt-sgd-x32-1_70.lib
为例
部分 | 说明 |
---|---|
libboost_atomic | Boost 库名称 |
vc141 | 使用的 MSVC 版本(vc141 表示 Visual Studio 2017,即 MSVC 14.1) |
mt | 多线程(mt = multi-threaded) |
sgd | 编译配置(详见下表) |
x32 | 32 位(x32 = 32-bit,x64 则是 64 位) |
1_70 | Boost 版本(1_70 = Boost 1.70.0) |
库文件名 | 运行时库 | 多线程 | 调试模式 | 静态/动态链接 |
---|---|---|---|---|
libboost_atomic-vc141-mt-gd-x32-1_70.lib | 动态 (MDd.dll ) | Yes | Debug | 动态链接 |
libboost_atomic-vc141-mt-s-x32-1_70.lib | 静态 (MT.lib ) | Yes | Release | 静态链接 |
libboost_atomic-vc141-mt-sgd-x32-1_70.lib | 静态 (MTd.lib ) | Yes | Debug | 静态链接 |
libboost_atomic-vc141-mt-x32-1_70.lib | 动态 (MD.dll ) | Yes | Release | 动态链接 |
参考
本文由作者按照 CC BY 4.0 进行授权