boost开始使用boost


备注

什么是Boost?

Boost是一系列免费的高质量C ++库,涵盖了广泛的主题。它通常被认为是C ++的“第二标准库”,因为使用Boost解决了C ++中的许多常见问题。

来自boost.org

Boost提供免费的同行评审的可移植C ++源代码库。

我们强调与C ++标准库兼容的库。 Boost库旨在广泛使用,并可用于广泛的应用程序。 Boost许可证鼓励商业和非商业用途。

一些Boost库甚至已经进入C ++ 11标准库,而其他一些如Boost.OptionalBoost.Variant将成为C ++ 17的一部分。

Boost能做什么?

Boost涵盖了编程的大部分角落。来自Stack Overflow上的boost标签维基

它包括以下库:

  • 字符串和文本处理
  • 集装箱
  • 迭代器
  • 算法
  • 函数对象和高阶编程
  • 通用编程
  • 模板元编程
  • 预处理器元编程
  • 并发编程
  • 数学和数字
  • 正确性和测试
  • 数据结构
  • 图像处理
  • 输入输出
  • 语言间支持
  • 记忆
  • 解析
  • 编程接口
  • 破坏的编译器解决方法

版本

新图书馆发行说明发布日期
1.10.0 笔记 1999年12月14日
1.11.0 有理数 笔记 2000-02-01
1.12.0 笔记 2000年2月23日
1.13.0 效用,类型特征,呼叫特征,压缩对 笔记 2000-02-29
1.14.0 笔记 2000年3月5日
1.15.0 随机数 笔记 2000年6月17日
1.16.0 功能,迭代器头 笔记 2000-06-28
1.17.0 排列 笔记 2000年8月3日
1.18.0 图,正则表达式 笔记 2000-09-28
1.19.0 概念检查,Python,静态断言,
物业地图概念
笔记 2000年12月10日
1.20.0 转变 笔记 2001年1月6日
1.21.0 迭代器适配器,池,测试 笔记 2001-03-09
1.22.0 CRC 笔记 2001-05-25
1.23.0 Any,Function,Tokenizer,
特殊功能,Octonions,Quaternions
笔记 2001-07-06
1.24.0 元组 笔记 2001年8月19日
1.25.0 线程,绑定 笔记 2001-10-01
1.26.0 共同因素,预处理器 笔记 2001-11-30
1.27.0 笔记 2002-02-05
1.28.0 Lambda,I / O状态保护程序 笔记 2002-05-15
1.29.0 日期时间,动态位集,格式 笔记 2002-10-10
1.30.0 文件系统,可选,间隔,MPL,精神 笔记 2003-03-19
1.31.0 enable_if,Variant 笔记 2004-01-26
1.32.0 作业,Minmax,多指数,
数字转换,程序选项,范围,
序列化,字符串,Tribool
笔记 2004-11-19
1.33.0 Iostream,哈希,参数,
指针容器,波
笔记 2005-08-11
1.34.0 Foreach,Statechart,TR1,Typeof,Xpressive 笔记 2007-05-12
1.35.0 Asio,Bimap,循环缓冲区,功能类型,
Fusion,GIL,Interprocess,Intrusive,
数学/特殊功能,
数学/统计分布,MPI,系统
笔记 2008-03-29
1.36.0 累加器,异常,单位,无序 笔记 2008-08-14
1.37.0 笔记 2008-11-03
1.38.0 Flyweight,ScopeExit,Swap 笔记 2009-02-08
1.39.0 Signals2 笔记 2009-05-02
1.40.0 笔记 2009-08-27
1.41.0 物业树 笔记 2009-11-17
1.42.0 UUID 笔记 2010-02-02
1.43.0 功能/因素,功能/前向 笔记 2010-05-06
1.44.0 元状态机,多边形 笔记 2010-08-13
1.45.0 笔记 2010-11-19
1.46.0 ICL 笔记 2011-02-21
1.46.1 笔记 2011-03-12
1.47.0 计时,几何,凤凰,比率 笔记 2011-07-11
1.48.0 容器,区域设置,移动 笔记 2011-11-15
1.49.0 笔记 2012-02-24
1.50.0 算法,Functional / OverloadedFunction,
LocalFunction,Utility / IdentityType
笔记 2012-06-28
1.51.0 上下文 笔记 2012-08-20
1.52.0 笔记 2012年11月5日
1.53.0 Atomic,Coroutine,Lockfree,Multiprecision,
Odeint
笔记 2013年2月4日
1.54.0 Log,TTI,Type Erasure 笔记 2013-07-01
1.55.0 PREDEF 笔记 二〇一三年十一月一十一日
1.56.0 对齐,TypeIndex 笔记 2014年8月7日
1.57.0 笔记 2014年11
1.58.0 Endian,排序 笔记 2015年4月17日
1.59.0 转换,Coroutine2 笔记 2015年8月13日
1.60.0 VMD 笔记 2015年12月17日
1.61.0 计算,DLL,Hana,Metaparse 笔记 2016年5月13日
1.62.0 光纤,QVM 笔记 2016年9月28日
1.63.0 笔记 2016年12月26日
1.64.0 处理 笔记 2017年4月19日

安装或设置

请参阅Boost入门

大多数Boost库都是仅限标头的,这意味着您无需编译或链接到任何内容。

确保您获得最新版本的Boost:

  1. 访问www.boost.org
  2. 查找当前版本下载。目前,这个链接在这里显示在boost网站上您可以下载Boost的位置
  3. 为您的操作系统选择适当的存档文件,然后下载。

然后,只需包含相应的头文件即可使用仅头文件库。

一些Boost库需要编译:

  • Boost.Chrono
  • Boost.Context
  • Boost.Filesystem的
  • Boost.GraphParallel
  • 了Boost.Iostreams
  • Boost.Locale
  • Boost.MPI
  • Boost.ProgramOptions
  • Boost.Python的
  • Boost.Regex
  • Boost.Serialization
  • Boost.Signals
  • Boost.System
  • Boost.Thread
  • Boost.Timer
  • Boost.Wave

此外,以下库包含必须编译的组件:

  • Boost.DateTime

  • Boost.Graph

  • Boost.Math

  • Boost.Random

  • 如Boost.Test

  • Boost.Exception

可以通过站点上下载链接获取Boost的源代码,该链接重定向到其SourceForge页面以获取最新版本( 截至 2016年7月的1.61.0 )。这可以解压缩(或未配置等)到目录(例如C:\ local \ boost_1_61_0)。然后可以将此目录添加到您正在构建的软件的包含路径中。在此之后,您可以使用#include <boost/header/path.hpp> 在C ++文件中包含Boost标#include <boost/header/path.hpp>

Boost中的大多数库都是仅限标头的。如果您只需要这些,那么上面的源代码分发就是所需要的。但是,如果您需要使用其中一个需要构建编译二进制文件的库,那么您也需要它。

在任何系统上,获取正确二进制文件的最可靠方法是自己构建它们。对于WindowsLinux / Unix / POSIX,这些指示略有不同。

在使用Visual Studio的Windows上, 自行构建库的另一种方法是从Boost的SourceForge页面截至 2016年7月的1.61.0 )下载预构建的库。在该页面上,您可以选择将安装特定Visual Studio版本的版本的安装程序或包含所有受支持的Visual Studio版本的二进制文件的7-zip文件(boost_X_XX_X-bin-all-32-64.7z)。这些选项中的任何一个都包括源/标头以及二进制文件,因此无需在上面下载源代码分发。获得之后,解压缩/安装到目录(例如C:\ local \ boost_1_61_0)并将该目录添加到包含路径,然后添加包含与您的Visual Studio版本对应的二进制文件的目录(例如C:\本地\ boost_1_61_0 \ lib32-msvc-12.0(用于Visual Studio 2013 32位项目)到库路径。

安装和运行Boost(Cygwin)

(初级; IDE:CLION)

首先,从Cygwin镜像安装boost:打开install exe,搜索boost,安装软件包。


安装boost后:它将位于/usr/include/boost 。这就是一切。所有#include 语句都是boost文件夹中的路径,如: #include <boost/archive/text_oarchive.hpp>


.cpp 文件中包含所选的boost文件后,在链接 并告诉cmake搜索下载的boost代码之前,您的代码仍然无法在您选择的IDE中编译。


为了让cmake搜索你的提升代码,

find_package(Boost 1.60.0 COMPONENTS components_you_want)

# for example: 
find_package(Boost 1.60.0 COMPONENTS serialization)
 

然后,包括目录: include_directories(${Boost_INCLUDE_DIRS})

最后,添加您的可执行文件并链接库:

add_executable(your_target ${SOURCE_FILES})
target_link_libraries(your_target ${Boost_LIBRARIES} -any_missing_boostlibs)
 

在启动程序之前,通过测试来避免错误转储,以便在包含任何内容或运行代码之前查看是否已找到boost:

if (Boost_FOUND)
    include_directories(${Boost_INCLUDE_DIRS})
    add_executable(YourTarget ${SOURCE_FILES})
    target_link_libraries(your_target ${Boost_LIBRARIES} -missing_libs)        
endif()
 

我包含了-missing_libs 因为您可能遇到的错误是某些boost库或其他可能尚未链接,您必须手动添加它 - 例如,我之前引用的链接


总之,最终的CMakeLists.txt文件可能如下所示:

cmake_minimum_required(VERSION 3.7)
project(your_project)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp tmap.cpp tmap.h)
find_package(Boost 1.60.0 COMPONENTS serialization)

if(Boost_FOUND)
    include_directories(${Boost_INCLUDE_DIRS})
    add_executable(your_project ${SOURCE_FILES})
    target_link_libraries(your_project ${Boost_LIBRARIES})
endif()