[英]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库的最佳指南是“ 超越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.