繁体   English   中英

在ubuntu上使用Boost

[英]Using Boost on ubuntu

我过去听过很多关于Boost的好评,我想我会试一试。 所以我从Ubuntu 9.04中的包管理器下载了所有必需的包。 现在我无法找到如何实际使用darn库。

有没有人知道一个关于Boost的好教程,从Hello World到高级主题,还介绍了如何在ubuntu上使用g ++编译程序?

同意; boost网站在很大程度上都有很好的教程,按子库分解。

至于编译,在头文件中定义了80%的库实现,这使得编译变得微不足道。 例如,如果你想使用shared_ptr,你只需要添加

#include <boost/shared_ptr.hpp>

并像往常一样编译。 无需向g ++命令添加库路径,也无需指定-llibboost。 只要boost目录位于包含路径中,就可以完成所有设置。

从boost文档:

需要编译和链接的唯一库如下:必须单独构建的唯一Boost库是:

  • Boost.Filesystem的
  • 了Boost.Iostreams
  • Boost.ProgramOptions
  • Boost.Python(在构建和安装之前查看Boost.Python构建文档)
  • Boost.Regex
  • Boost.Serialization
  • Boost.Signals
  • Boost.Thread
  • Boost.Wave

一些库具有可选的单独编译的二进制文件:

  • Boost.DateTime有一个二进制组件,只有在使用其to_string / from_string或序列化功能时才需要,或者如果你的目标是Visual C ++ 6.x或Borland。
  • Boost.Graph还有一个二进制组件,只有在你打算解析GraphViz文件时才需要它。
  • Boost.Test可用于“仅标题”或“单独编译”模式,但建议单独编译以供严肃使用。

因此,如果您正在使用其中一个列出的库,请使用入门指南 ,以便开始编译和链接到Boost。

Boost网站有一些很好的教程,它们只是隐藏的一种

图书馆文档是一个混合包。 有些是好的,但有些更多的是参考而不是指南。 (某些)Boost库的最佳指南是“ 超越C ++标准库 ”一书。 至少,介绍给出了许多库的一个段落描述。 从那里,您可以决定哪个库对您当前的需求最重要,如果在书中,请阅读相关章节,或阅读网站上的文档。

如果你读德语,有一个很好的在线指南 谷歌翻译做得非常好,像我这样的非演讲者可以理解它。

另外,除非你有很多C ++经验,否则我会先尝试更简单的库(例如smart_ptr,tuple,conversion,tokenizer,regex,date_time,test),然后再尝试更复杂的库(bind,variant,any),或者真正先进的(概念,MPL,Fusion)。

使用基于Ubuntu的Easypeasy 1.1(对于上网本)我能够使用Synaptic Package Manager安装,我相信,libboost-dev。 然后只需添加:

#include "boost/foreach.hpp"

我能够替换现有应用程序中的现有行(其中有一个与boost无关的Ask类):

for (std::vector<Ask*>::iterator ii=ui.begin(); ii!=ui.end(); ++ii)
    std::cout << (*ii)->prompt() << (*ii)->answer() << std::endl;

有:

BOOST_FOREACH (Ask* ii, ui)
     std::cout << ii->prompt() << ii->answer() << std::endl;

据我了解,这只是一个标题功能。 我还没有使用任何需要链接时间变化的东西。

我只是看着那个德语助推器,发现还有一个英文版 (同一本书)。 它看起来很不错,刚刚阅读了非常有用的介绍性页面

到目前为止,我读过的最好的教程是这两本书:

这些库附带了文档,其中许多都有教程作为文档的一部分。 刚开始阅读

Boost不是一种编程语言,也不是一个应用程序框架 - 因为它只是一个库的集合,所以没有Boost'Hello World'程序。 Boost中的大多数库可以或多或少地独立使用,并且它们的大小从一个函数到大型库可以独立使用。

了解Boost的最佳方法就是在编写新代码时尝试使用它。 smart_ptr使用smart_ptr ; 下次要进行编译时工作时使用MPL。 Boost中有很多种,但你应该开始看看Utility部分; 这些是最轻量级和最常用的库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM