boost:编译安装(win10 + mingw + cmake )

本文介绍如何在Windows环境下安装配置Boost库,并通过示例演示如何使用CMake引用Boost库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境

  • 操作系统: Windows 10
  • Boost 版本: 1.54.0/1.80.0
  • GCC 版本: x86_64-w64-mingw32 11.2.0
  • CMake 版本: 3.23.2
  • CLion 版本: 2022.2.3

boost编译安装

  • 首先从 Boost 官网下载所需要安装的 Boost 版本: Boost 版本历史下载页面
  • 将下载后的压缩包进行解压, 得到 Boost 的源码, 此处以 Boost 1.54.0 版本为例, 如下图所示, 源码目录路径此处为: D:\ProgTools\boost_1_54_0.

在这里插入图片描述

安装 Boost.Build

Boost.Build 是一个基于文本的系统, 用于开发、测试和安装软件.

  • 进入 tools\build\v2\ 目录(注: 此处最好查阅一下官方文档, 如最新 Boost 1.80.0 版本中只进入到 tools\build\ 目录), 重点是确认当前路径下具有 bootstrap.batb2.exe 两个文件.
  • 运行使用 GCC 运行 bootstrap.bat 脚本, 注意要使用 gcc 作为参数.
  • 运行 .\b2 install --prefix=PREFIX 安装 Boost.Build, 其中PREFIX 是 Boost.Build 的安装路径, 此处路径为 D:\ProgTools\boost_1_54_0\boost_build(boost_build需要手动创建)
cd .\tools\build\v2\
.\bootstrap.bat gcc
.\b2 install --prefix=D:\ProgTools\boost_1_54_0\boost_build toolset=gcc


cd .\tools\build
.\bootstrap.bat gcc
.\b2 install --prefix=D:\ProgTools\boost_1_80_0\boost_build toolset=gcc

安装成功后, 在Boost.Build 安装路径下找到 b2.exe 文件: 在 1.54.0 版本是在 bin 目录下; 而在 1.80.0 版本直接在 Boost.Build 的安装目录下.

在这里插入图片描述
在这里插入图片描述

编译安装 Boost

在 Boost 的根目录使用以下命令使用 GCC 编译安装 Boost:

.\tools\build\v2\b2 --build_dir=D:\ProgTools\boost_1_54_0\build toolset=gcc --build-type=complete stage

.\tools\build\b2 --build_dir=D:\ProgTools\boost_1_80_0\build toolset=gcc --build-type=complete  address-model=64 stage

其中:

  • b2 即上文 Boost.Build 路径下的 b2.exe 文件, 此处可以通过完整路径运行, 也可以将其添加到环境变量从而省去路径部分.
  • –build_dir: 编译生成的中间文件存放目录, 可以不指定.
    toolset: 编译所用的工具集, 此处使用 GCC 编译所用要特别指明为 gcc.
  • –build_type: 构建类型, complete 表示构建库的所有支持的编译版本, 包括静态库、动态库、调试版本等

编译需要一段时间, 完成后, 可以在 stage\lib 目录下看到生成的库文件:

在这里插入图片描述

CMake 配置引用 Boost 库

以只包含 main.cpp 源文件的项目为例, 代码如下:

#include <boost/regex.hpp>
#include <iostream>
#include <string>

int main() {
    std::string line("Subject: Aw shell");
    boost::regex pat("^Subject: (Re: |Aw: )*(.*)");

    boost::smatch matches;
    if (boost::regex_match(line, matches, pat))
        std::cout << "MATCH: " << matches[2] << std::endl;
    return 0;
}

对应的 CMake 文件如下:

cmake_minimum_required(VERSION 3.23)
project(cppexp)

set(CMAKE_CXX_STANDARD 14)

set(BOOST_ROOT "D:/ProgTools/boost_1_80_0/")    # 指定Boost库的根目录
set(Boost_USE_STATIC_LIBS ON)    # 设置使用Boost静态库
set(Boost_ARCHITECTURE "-x64")    # 指定库架构为x64
find_package(Boost COMPONENTS regex REQUIRED)    # 查找Boost库
include_directories(${Boost_INCLUDE_DIRS})    # 包含Boost库的头文件目录


MESSAGE(STATUS "Boost_INCLUDE_DIRS = ${Boost_INCLUDE_DIRS}")
MESSAGE(STATUS "Boost_LIBRARIES = ${Boost_LIBRARIES}")
MESSAGE(STATUS "Boost_LIB_VERSION = ${Boost_LIB_VERSION}")

add_executable(cppexp main.cpp)
target_link_libraries(cppexp ${Boost_LIBRARIES})    # 链接Boost库



其中与 Boost 库相关的关键语句如下:

  • set(BOOST_ROOT “D:/ProgTools/boost_1_54_0/”): 指定 Boost 库的根目录. 由于是编译安装的 Boost 库, 因此一般需要该语句, 否则会出现找不到 Boost 库的情况.
  • find_package(Boost COMPONENTS regex REQUIRED): 查找 Boost 库配置, COMPONENTS 选项用于指定所使用的具体的 Boost 库名称, 完整指令格式如下:
find_package(Boost
  [version] [EXACT]      # 可选项, 最小版本或者指定版本
  [REQUIRED]             # 可选项, 如果找不到所需库报错
  [COMPONENTS <libs>...] # 所需的库名称,"regex"代表"libboost_regex"
  )     

  • include_directories(${Boost_INCLUDE_DIRS}): 包含 Boost 库的头文件目录
  • target_link_libraries(cppexp ${Boost_LIBRARIES}): 链接 Boost 库
  • set(Boost_USE_STATIC_LIBS ON): 设置使用 Boost 静态库. 笔者在不使用该语句时会出现运行异常退出的情况, 如下图所示:

在这里插入图片描述

  • set(Boost_ARCHITECTURE “-x64”): 指定库架构为 x64. 该指令在 1.54.0 版本并不需要, 但在 1.80.0 则必须加上, 这是因为 1.80.0 版本生成的库文件中有 x32 和 x64 的后缀, 需要用该选项进行指定, 否则会出现找到 Boost 库但找不到具体模块的情况.

在这里插入图片描述
在这里插入图片描述

  • 注: CMake 版本要与 Boost 库版本相对应, Boost 版本过高或 CMake 版本过低会出现以下提示:

在这里插入图片描述
配置成功后即可运行上述代码, 如下所示:
在这里插入图片描述

### 如何在Windows系统上安装配置Boost库与CMake #### 准备工作 为了顺利地完成安装和配置,在开始之前需确认已准备好以下工具并了解基本概念。 - **安装 MinGW-w64 或者 Visual Studio** - 对于使用GCC编译器的情况,建议先按照指南安装MinGW-w64,并将其路径加入系统的环境变量中[^3]。 - **下载 CMakeBoost 源码包** - 访问[CMake官网](https://cmake.org/)获取最新版本的安装程序。 - 前往[Boost官方网站](https://www.boost.org/users/download/)下载所需版本源代码压缩包。 #### 安装 CMake 执行从官方站点下载得到的CMake安装文件,默认选项即可满足大多数需求。完成后可通过命令行输入`cmake --version`验证是否成功安装。 #### 解压并设置Boost环境 将下载好的Boost压缩包解压至指定位置(比如D:\Libraries),此目录后续会被设为`BOOST_ROOT`环境变量的一部分[^4]。 #### 编译Boost库 打开命令提示符窗口,切换到Boost根目录下运行如下脚本: ```batch bootstrap.bat gcc # 如果采用的是MinGW-GCC作为编译器;如果是MSVC则省略参数 .\b2.exe address-model=64 toolset=gcc variant=release link=shared threading=multi runtime-link=shared install ``` 这一步骤会花费一定时间来构建所需的静态或动态链接库文件,最终产物位于`stage/lib`子目录内[^2]。 #### 更新系统PATH环境变量 为了让全局范围内能够识别新安装的组件,需要更新计算机的环境变量: -MinGW bin路径添加进去以便访问gcc/g++等工具链; - 同样也要把Boost `bin.v2/libs`以及`stage/lib`里的绝对路径追加进来以支持链接阶段查找依赖项。 #### 创建简单的CMakeLists.txt测试项目结构 创建一个新的工程文件夹,内部放置一个名为`main.cpp`的小例子用于检验集成效果,接着在同一级建立文本文件命名为`CMakeLists.txt`,其内容可以参照下面模板编写[^5]: ```cmake cmake_minimum_required(VERSION 3.14) project(TestProject) set(CMAKE_CXX_STANDARD 17) # 设置Boost根目录 set(BOOST_ROOT "D:/Libraries/boost_1_69_0") find_package(Boost REQUIRED COMPONENTS system filesystem) if (Boost_FOUND) include_directories(${Boost_INCLUDE_DIRS}) endif() add_executable(test_project main.cpp) target_link_libraries(test_project PRIVATE ${Boost_LIBRARIES}) ``` 最后回到该工程所在的位置启动CMD终端依次键入下列指令完成整个流程: ```bash mkdir build && cd build cmake .. cmake --build . ``` 如果一切正常的话,则说明已经可以在Windows平台上利用CMake管理含有Boost依赖关系的C++工程项目了!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值