【C++】揭秘工程实践:Boost 源码编译与 CMake 环境搭建的具体流程


🔥大奇个人主页 :https://blog.csdn.net/m0_75192474?type=blog

本文所属专栏:https://blog.csdn.net/m0_75192474/category_13131150.html

Boost库介绍

Boost 是 C++ 社区最权威、最成熟的准标准库集合,由 C++ 标准委员会成员主导开发,是标准库的 "孵化器" 与 "超级扩展"。它提供 160+ 高质量、跨平台、开源的库,覆盖内存、容器、网络、文件、并发、序列化、数学等几乎所有开发场景。

应用场景

领域 核心库 典型项目
网络通信 Asio/Beast 机器人 UDP、TCP 服务器、物联网网关、WebSocket 服务
嵌入式 / 机器人 SmartPtr/Pool/Asio/Serialization 传感器数据采集、电机控制、多任务、低内存优化
跨平台工具 Filesystem/ProgramOptions/StringAlgo 文件管理器、日志工具、配置解析器
高性能服务 Asio/Coroutine2/Thread 高并发服务器、实时数据处理、消息队列
科学 / 金融 Math/Multiprecision 数值模拟、风险计算、密码学
游戏 / 图形 SmartPtr/Pool/Container 粒子系统、资源管理、场景图
数据持久化 Serialization/Filesystem 配置保存、数据备份、对象存储

Boost官网

将zip解压,尽量使用7-zip解压因为系统解压会非常慢

紧接着就是安装mingw,因为需要用到gcc

注:本人使用的是Qt安装时自带的mingw, 其路径为 D:\Lenovo_app\QtInstall\Tools\mingw730_64\bin 里面含有gcc.exe

配置完环境变量后,在终端执行如下命令,查看gcc的位数

复制代码
gcc  ---version

若输出 Target: x86_64-w64-mingw32 说明mingw是64位的

点击 win键 输入 cmd 点击 "以管理员身份运行" ,然后进入到你解压的目录,如果进入D盘输入 D:

执行命令

复制代码
bootstrap.bat gcc

执行成功后会生成一个 b2.exe文件

编译安装

复制代码
b2 toolset=gcc address-model=64 link=static,shared --with-system --with-filesystem --with-thread --with-chrono --with-regex --with-program_options --with-json --with-log --with-date_time --prefix=D:\C++Boost\boost_install install
  • toolset=gcc :指定编译器 = GCC(MinGW)
  • address-model=64 :编译 64 位版本的 Boost
  • link=static,shared :static = 静态库 .a ;shared = 动态库 .dll
  • --with-xxx :只编译这些 Boost 模块
  • prefix=D:\C++Boost\boost_install :编译完后,把库安装到这个目录

静静等待,成功后 boost_install 目录下生成 include ,lib ,分别存放头文件和库文件

VsCode配合CMake使用

按照这样的目录结构创建工作空间

CMakeLists.txt文件

复制代码
#  指定 CMake 最低版本要求,必须写在最前面
cmake_minimum_required(VERSION 3.10)

#  项目名
project(udpros2)

# 使用 C++17 标准编译
set(CMAKE_CXX_STANDARD 17)
set(BOOST_ROOT D:\\C++Boost\\boost_install64)
set(Boost_NO_SYSTEM_PATHS ON)

aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC)

include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${BOOST_ROOT}/include)

# 可执行文件输出路径
set(EXECUTABLE_OUTPUT_PATH D:\\SROS\\bin)

# 自动寻找 Boost
find_package(Boost REQUIRED
    system
    filesystem
    thread
)
# 生成可执行文件 app
add_executable(udpros2 ${SRC})

target_link_libraries(udpros2
    PRIVATE
    ${Boost_LIBRARIES}
    ws2_32
    iphlpapi
)

注:在windows使用asio网路库需要

复制代码
target_link_libraries(udpros2
    PRIVATE
    ${Boost_LIBRARIES}
    ws2_32
    iphlpapi
)

在main函数中添加Boost头文件测试

main.cpp

cpp 复制代码
#include <iostream>
#include <boost/thread.hpp>
#include <boost/asio.hpp>
#include <boost/json.hpp>
#include "udp.h"
int main(){
    std::cout<< "hello sros" << std::endl;
 return 0;
}

进入 build目录 输入

复制代码
cmake .. -G "MinGW Makefiles"

再执行

复制代码
 mingw32-make.exe

解决Vscode中头文件包波浪线错误

安装C/C++插件后,如果发现自己在源码中包含的头文件报错,找不到 includePath,一般都是插件问题

新建 c_cpp_properties.json 加入

json 复制代码
/**
 * @程序功能: C/C++插件使用配置
 * @程序作者: LooKRays大奇
 * @编写日期: 2026-03-23 17:50
 * @程序备注: 解决VScode的头文件路径错误波浪线,主要参数是includePath,文件生成可在插件设置中找到
 */
{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**", // 项目所有文件夹
                "${workspaceFolder}/include",// 头文件目录
                "D:/C++Boost/boost_install64/include"// Boost 头文件
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "cStandard": "c11",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "windows-gcc-x64", // 使用 GCC 语法提示
            "configurationProvider": "ms-vscode.cmake-tools"// 从CMake拿配置,有时没用
        }
    ],
    "version": 4
}

主要就是配置

json 复制代码
        "includePath": [
            "${workspaceFolder}/**", // 项目所有文件夹
            "${workspaceFolder}/include",// 头文件目录
            "D:/C++Boost/boost_install64/include"// Boost 头文件
        ],

或者鼠标悬浮到头文件处,点击 快速修复

再点击

相关推荐
Yupureki2 小时前
《Linux系统编程》19.线程同步与互斥
java·linux·服务器·c语言·开发语言·数据结构·c++
96772 小时前
C++ Lambda 表达式 匿名函数 sort
数据结构·c++·算法
艾莉丝努力练剑2 小时前
【Linux信号】Linux进程信号(下):可重入函数、Volatile关键字、SIGCHLD信号
linux·运维·服务器·c++·人工智能·后端·学习
FL16238631292 小时前
基于C#winform部署RealESRGAN的onnx模型实现超分辨率图片无损放大模糊图片变清晰
开发语言·c#
liuyao_xianhui2 小时前
优选算法_锯齿形层序遍历二叉树_队列_C++
java·开发语言·数据结构·c++·算法·链表
si莉亚2 小时前
2026.3.31成功安装Ubuntu22.04+ROS2记录
linux·c++·开源
Elnaij2 小时前
从C++开始的编程生活(24)——C++11标准Ⅰ
开发语言·c++
mjhcsp2 小时前
AT_arc205_c [ARC205C] No Collision Moves 题解
开发语言·c++·算法·题解
MLGDOU2 小时前
【Qt开发】信号与槽
开发语言·数据库·qt