美文网首页C/C++98/C++11
Boost库安装教程

Boost库安装教程

作者: EVANMORE | 来源:发表于2017-12-28 19:43 被阅读570次

    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查看结果。

    6. 参考链接

    Getting Started on Unix Variants

    相关文章

      网友评论

        本文标题:Boost库安装教程

        本文链接:https://www.haomeiwen.com/subject/yzgmgxtx.html