1. 下载
这里是一linux操作系统为例。
直接从官网上下载最新的boost库, boost_1_61_0.tar.bz2;
下载完后放到你所要安装的路径中,然后运行解压,通常我们会放在路径/usr/local
下
tar --bzip2 -xf /usr/local/boost_1_61_0.tar.bz2
2. Header-Only的库
解压完后我们第一个关心的事情是怎么去使用boost库来实现我们自己的应用程序,其实大部分的Boost库都是head-only的:只需要包含头文件就可以进行编译运行了,而不需要链接相应的boost库。
以下列的是那些必须单独编译的Boost库
- Boost.Chrono
- Boost.Context
- Boost.Filesystem
- Boost.GraphParallel
- Boost.IOStreams
- Boost.Locale
- Boost.MPI
- Boost.ProgramOptions
- Boost.Python (see the Boost.Python build documentation before building and installing it)
- Boost.Regex
- Boost.Serialization
- Boost.Signals
- Boost.System
- Boost.Thread
- Boost.Timer
3. 一个简单的使用Boost的程序
这个简单的程序只使用了header-only的库,这个程序从标准输入里面读取了一串整数,然后使用Boost.Lambda表达式来依次乘3,然后写到标准输出中
#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) << " " );
}
我们这里使用CMake来进行编译,下面是CMakeLists.txt文件的内容
project(tutorial-0)
cmake_minimum_required(VERSION 3.5)
set(CMAKE_CXX_STANDARD 14)
find_package(Boost REQUIRED)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(foo foo.cpp)
endif()
编译完成后,运行如下命令来验证这个小程序,
echo 1 2 3 | ./example
4. 准备好使用一个单独编译的Boost库
如果你希望使用一个单独编译的Boost库,那么首先要对之前下载解压的Boost工程进行编译
Boost库的编译安装还有一些依赖库,需要先安装
apt-get install mpi-default-dev libicu-dev python-dev libbz2-dev
安装完成后,回到boost库的路径下,运行如下命令
$ ./bootstrap.sh --prefix=local/usr/install/boost_1_61_0
$ ./b2 install
--prefix后面跟的是你安装boost库的路径,安装完成后所有的头文件和lib库都会保存在这个路径下,
$ tree -L 1
.
├── include
└── lib
5. 示例程序
这个程序用到了boost提供的正则匹配库,
#include <boost/regex.hpp>
#include <iostream>
#include <string>
int main()
{
std::string line;
boost::regex pat("tcp:*");
while(std::cin)
{
std::getline(std::cin, line);
boost::smatch matches;
if(boost::regex_match(line, matches, pat))
std::cout << matches[0] << std::endl;
}
}
依旧通过CMake进行编译
- 首先设置Boost库的路径,也就是之前的安装路径
- 然后使用find_package来搜索这个路径下面是否有需要的regex库
- 最后设置头文件搜索路径以及把找到的库link到应用程序
project(tutorial-0)
cmake_minimum_required(VERSION 3.5)
set(CMAKE_CXX_STANDARD 14)
set(BOOST_ROOT /usr/local/install/boost_1_61_0)
find_package(Boost COMPONENTS regex REQUIRED)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(foo foo.cpp)
target_link_libraries (foo ${Boost_LIBRARIES})
endif()
编译完成后运行app查看结果。
网友评论