boost入门(一):boost简介

前言

发现自己做为C++,竟然没有用过boost。特地学习下如何使用boost,我作为初学者,会从入门指南开始,一点点深入了解boost。

本文采用的版本是boost 1.75.0

boost 介绍

boost 是一个跨平台的C++工具库,是的,没错!相当于一个大的工具集合。当然boost没有那么全面,比如界面库就没有。

首先到官网下载boost,我选择的是boost 1.75.0 Windows版本。可以阅读发行版本的文档,来查看boost包含有哪些工具,我就不一一列出来,可以去boost 1.75.0 documentation看下。

boost 直接引入hpp

boost是多个库的集合,有些库采用hpp头文件编写。我们如果要用这种库,直接引用头文件即可。

首先设置项目直接引入boost的头文件:

在这里插入图片描述

接下来就能使用使用boost的头文件了。以下是引用Boost.Lambda模块:

#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>

int main()
{
    using namespace boost::lambda;
    typedef std::istream_iterator<int> in;

    std::for_each(
        in(std::cin), in(), std::cout << (_1 * 3) << " ");
}

这个代码的功能是把输入的数字*3,然后再输出。

具体代码我们不用看,只要看到运行结果,说明我们成功调用了boost库中的Lambda模块。是不是很简单?

boost 构建

boost中有些库需要构建,那么就需要借助b2.exe程序了。我们可以把b2.exe理解成预编译器,它会告诉真正的编译器如何进行编译。

b2.exe 默认在目录下是没有的,需要运行tools\build 目录下的bootstrap.bat :

在这里插入图片描述

在这里插入图片描述

从图可以看出,运行bootstrap.bat,会编译出b2.exe

有了b2.exe,我们下一步就是安装了。安装格式为 b2 install --prefix = PREFIX ,其中PREFIX为要安装Boost.Build的目录。比如我要安装在F:\C++\boost_1_75_0\build,那么命令行:

b2 install --prefix=F:\C++\boost_1_75_0\build

最后一步,可选。将F:\C++\boost_1_75_0\build\bin添加到环境变量中,以便命令行在哪个目录都可以用b2

下面开始重头戏,编译boost。F:\C++\boost_1_75_0\builds代表编译过程中的中间文件。

在命令行中输入:

b2 --build-dir=F:\C++\boost_1_75_0\builds toolset=msvc --build-type=complete stage

编译过程有点慢,请耐心等待!编译的结果在F:\C++\boost_1_75_0\stage\lib目录下

编译完之后,我们在项目上添加附加库目录:

在这里插入图片描述

编译完之后,我们演示下与Boost二进制库的链接:

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

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

    while (std::cin)
    {
        std::getline(std::cin, line);
        boost::smatch matches;
        if (boost::regex_match(line, matches, pat))
            std::cout << matches[2] << std::endl;
    }
}

PS:因为VS编译器可以自动链接到库,所以我们不需要手动添加依赖库

boost 构建的命名规则

我们可以找一个库 libboost_regex-vc142-mt-gd-x32-1_75.lib 进行分解:

lib

​ 前缀:除Windows外,每个boost库名称都以该字符串开头。在Windows上,只有静态库才会以lib开头

boost_regex

​ 库名称:所有boost库文件名都以 boost_ 开头

-vc142

​ 平台工具集,看图:

在这里插入图片描述

-mt

​ 线程:如果有这个标记就代表该库是在启用多线程支持的情况下构建的,没有的话就代表没有多线程支持

-gd

​ ABI(Application Binary Interface,ABI):对影响库与其他已编译代码互操作性的细节编码。简单来说编译模式:

关键字当使用这个库的时候Boost.Build 选项
s静态链接runtime-link=static
g优化后的调试版本,俗称release带调试信息版本runtime-debugging=on
y使用python的特殊调试版本python-debugging=on
d没有优化调试版本,俗称debug版本variant=debug
p使用STLPort标准库,而不是编译器随附的默认库stdlib=stlport

Boost.Build 选项是b2.exe运行的选项

x32

​ 指的是32位程序,有两种模式:x32和x64。官方文档这个地方没有更新,我编译出来的是x32,官网上写的x86。

-1_75

​ boost的版本号,代表我所使用的1.75.0,因为没有小版本号所以就省略了0

.lib

​ 扩展名:根据操作系统约定确定。Linux为.a和.so,Windows为.lib和.dll

补充

如果想特定的编译boost库,可以看b2 用户手册,手册写的很详细。

接下来,我会写关于Asio库。请看下一篇:《boost入门(二):Asio的简介》

有什么问题,我会及时回复。

### Boost C++ Libraries概述 Boost套广泛使用的C++库集合,旨在提供高质量的通用组件。这些库经过严格的同行评审过程,并遵循现代C++编程实践[^1]。 #### 主要特点 - **跨平台支持**:能够在多种操作系统上运行,包括Windows、Linux和macOS。 - **标准化影响**:许多Boost功能最终被纳入到ISO标准中,成为正式的C++特性的部分。 - **丰富的工具集**:涵盖了从容器、算法、内存管理到线程处理等多个方面的需求。 #### 安装方法 安装Boost通常有两种方式: ##### 使用包管理器 对于大多数主流的操作系统而言,可以直接通过系统的软件包管理系统来获取预编译版本的Boost库: ```bash sudo apt-get install libboost-all-dev # Ubuntu/Debian brew install boost # macOS Homebrew ``` ##### 手动构建 如果需要特定配置或最新版,则可以从源码自行编译: ```bash ./bootstrap.sh --prefix=/usr/local # 配置安装路径 ./b2 # 编译项目 sudo ./b2 install # 安装文件至指定位置 ``` #### 基本使用案例 下面展示了个简单的例子,说明如何利用`boost::asio`来进行网络通信操作: ```cpp #include <iostream> #include <boost/asio.hpp> int main() { try { boost::asio::io_context io; boost::asio::ip::tcp::socket socket(io); // 这里可以加入更多代码实现具体的客户端连接逻辑 std::cout << "Socket created successfully." << std::endl; } catch (std::exception& e) { std::cerr << "Exception: " << e.what() << "\n"; } return 0; } ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值