C++ | boost库入门

目录

一、boost库简介

二、boost库安装及编译

1.目录结构说明

2.编译静态库

3.构建工具b2 

三、boost库的简单使用


一、boost库简介

        Boost是一个功能强大 , 构造精良 , 跨越平台 , 代码开源 , 完全免费的 C ++ 程序库。

  • 功能强大

        共包含 160 余个库 / 组件 , 涵盖字符串与文本处理、容器、迭代器、算法、图像处理、模板元编程、并发编程等多个领域。

  • 构造精良

        由 c ++ 标准委员会成员发起倡议并建立 boost 社区 , C ++11 标准库中三分之二来自 boost , 并且将来还会有更多的库进入 c ++ 标准库 , 因此 boost 是一个 c ++ " 准 " 标准库。

  • 跨越平台

        支持现有的所有操作系统。

  • 代码开源,完全免费 

        Boost的发布采用Boost Software License,这是一个不同于GPL和Apache的非常宽松的许可证(许可证相关知识可查看秒懂开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别,该许可证允许库用户将Boost用于任何用途,既鼓励非商业用途,也鼓励商业用途。用户无须支付任何费用,不受任何限制,即可轻松享有Boost的全部功能。

        Boost库的大多数组件不需要编译链接,我们在自己的源码里直接包含头文件即可。(注意:包含头文件的时候需要有boost目录,即#include "boost/logic/tribool.hpp",而不能是#include "logic/tribool.hpp")剩下的少量库(如chrono、date_time、program_options、test、thread等)必须编译成静态库或动态库,并在构建时指定链接选项才能使用。

        Boost的独特之处:它把C++类的声明和实现放在了一个文件中,而不是分成两个文件,即.h+.cpp,故文件的后缀是.hpp。

二、boost库安装及编译

1.目录结构说明

        在boost官网下载boost压缩文件(我用的是boost_1_74_0.zip这个版本),解压后主要目录结构说明如下:

--boost:最重要的目录 , 90 % 以上的 Boost 程序库源码都在这里

--doc:HTMI 格式的文档 , 也可以生成 PDF 格式的文档

--libs:所有组件的示例、测试、编译代码和说明文档

--more:库作者的相关文档

--status:可用于测试 Boost 库的各个组件

--tools:用于编译boost的工具的源代码等

2.编译静态库

        运行bootstrap.bat文件,会生成b2.exe及project-config.jam文件。执行b2.exe(我是Windows操作系统),会在boost_1_74_0\stage\lib下生成x64、x86平台的release及debug版本的静态库。(编译动态库需要添加参数:b2.exe link=shared)

C++ | boost库入门_第1张图片

3.构建工具b2 

         b2使用文本格式的构建脚本来管理代码,其名称通常是“jamfile”或“Jamfile”(类似make构建工具的makefile脚本一样)。此外b2还有一个特殊的“jamroot”文件,它需要放在整个项目的根目录下,用于管理项目树,定义整个项目的构建设置。

        jamroot文件一般用于定义整个项目里通用的编译参数、包含路径等设置,避免每个子目录里的jamfile重复定义。

        b2使用的构建语言称为bjam,它是一种解释型语言,拥有完整的语法定义,包括变量、分支、循环语句、函数,甚至还包括类。bjam是基于token的语言,它使用空格、tab等空白字符来区分语法元素,不仅是单词,即使是“:”“;”这样的标点符号前后也必须要有空格,否则bjam将无法识别标点,导致语法错误。

        实际上b2是bjam语言的解释器,它查找当前目录下的jamfile,并向上查找jamroot,解释执行其中的bjam语句,最终完成软件的构建。
                                                                                                                           (以上四段并不懂)

三、boost库的简单使用

C++ | boost库入门_第2张图片

#include 
#include "boost/version.hpp"
int main()
{
    std::cout << BOOST_LIB_VERSION << std::endl;
    std::cout << BOOST_VERSION << std::endl;
}

                     —— 参考自《Boost程序库完全开发指南:深入C++”准”标准库(第5版)》  罗剑锋

你可能感兴趣的:(boost,c++,boost)