代码之家  ›  专栏  ›  技术社区  ›  Jan Deinhard

如何确定系统上的Boost版本?

  •  122
  • Jan Deinhard  · 技术社区  · 15 年前

    是否有一种快速确定系统上Boost C++库版本的方法?

    9 回复  |  直到 15 年前
        1
  •  98
  •   Khaled Alshaya    15 年前
        2
  •  72
  •   Vertexwahn    5 年前

    包括 #include <boost/version.hpp>

    std::cout << "Using Boost "     
              << BOOST_VERSION / 100000     << "."  // major version
              << BOOST_VERSION / 100 % 1000 << "."  // minor version
              << BOOST_VERSION % 100                // patch level
              << std::endl;
    

    可能输出:使用Boost 1.75.0

        3
  •  64
  •   user1245262    10 年前

    如果您只需要知道自己的信息,只需查看/usr/include/boost/版本.hpp(ubuntu13.10)并直接阅读信息

        4
  •  45
  •   hkaiser    10 年前
    #include <boost/version.hpp>
    #include <iostream>
    #include <iomanip>
    
    int main()
    {
        std::cout << "Boost version: " 
              << BOOST_VERSION / 100000
              << "."
              << BOOST_VERSION / 100 % 1000
              << "."
              << BOOST_VERSION % 100 
              << std::endl;
        return 0;
    }
    

        5
  •  18
  •   P-M    9 年前

    根据安装boost的方式和运行的操作系统,您还可以尝试以下操作:

    dpkg -s libboost-dev | grep 'Version'
    
        6
  •  7
  •   Kamil S Jaron    9 年前

    使用自制软件安装在OSX上的Boost version.hpp /usr/local/Cellar/boost/<version>/include/boost/version.hpp (请注意,路径中已经提到了该版本)。

    我想在任何类UNIX系统上确定版本的最快方法是搜索 boost 在里面 /usr :

    find /usr -name "boost"

        7
  •  5
  •   Jayhello    7 年前

    /usr/include/boost/version.hpp 默认情况下:

     locate `boost/version.hpp`
    

     grep BOOST_LIB_VERSION /usr/include/boost/version.hpp
    

      grep BOOST_VERSION /usr/include/boost/version.hpp.
    

    对我来说,我的系统中安装了两个版本的boost。输出如下:

    xy@xy:~$ locate boost/version.hpp |grep boost
    
    /home/xy/boost_install/boost_1_61_0/boost/version.hpp
    /home/xy/boost_install/lib/include/boost/version.hpp
    /usr/include/boost/version.hpp
    
    xy@xy:~$ grep BOOST_VERSION /usr/include/boost/version.hpp
    #ifndef BOOST_VERSION_HPP
    #define BOOST_VERSION_HPP
    //  BOOST_VERSION % 100 is the patch level
    //  BOOST_VERSION / 100 % 1000 is the minor version
    //  BOOST_VERSION / 100000 is the major version
    #define BOOST_VERSION 105800
    //  BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
    
    # or this way more readable
    xy@xy:~$ grep BOOST_LIB_VERSION /usr/include/boost/version.hpp
    //  BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
    #define BOOST_LIB_VERSION "1_58"
    

    xy@xy:~$ grep BOOST_LIB_VERSION /home/xy/boost_install/lib/include/boost/version.hpp
    //  BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
    #define BOOST_LIB_VERSION "1_61"
    
        8
  •  3
  •   JulianW    7 年前

    我绞尽脑汁想弄清楚

    最后执行以下操作,将版本代码存储在一个变量中,从而消除错误。在接受答案的注释中使用了maxschlepzig的示例。(无法评论,没有50个代表)

    我知道这个问题早就有答案了。但我在bash的任何地方都找不到该怎么做。所以我想这可能会帮助有同样问题的人。而且,无论boost安装在哪里,只要comiler能够找到它,这都应该是有效的。当您安装了多个版本时,它会给您comiler实际使用的版本号。

    {
    VERS=$(echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -s -x c++ -E - | grep "^[^#;]")
    } &> /dev/null
    
        9
  •  3
  •   artm    6 年前

    ~$ dpkg -s libboost-dev | grep Version
    Version: 1.58.0.1ubuntu1
    

    裁判: https://www.osetc.com/en/how-to-install-boost-on-ubuntu-16-04-18-04-linux.html

        10
  •  2
  •   User12547645    5 年前

    boost_version=$(cat /usr/include/boost/version.hpp | grep define | grep "BOOST_VERSION " | cut -d' ' -f3)
    echo "installed boost version: $(echo "$boost_version / 100000" | bc).$(echo "$boost_version / 100 % 1000" | bc).$(echo "$boost_version % 100 " | bc)"
    

    给了我 installed boost version: 1.71.0

        11
  •  1
  •   jakob.j    6 年前

    如果通过自制在macOS上安装了boost,则可能会看到安装的boost版本具有:

    ls /usr/local/Cellar/boost*
    
        12
  •  1
  •   Rambo8    5 年前

    cat/usr/本地/包含/增强/版本.hpp|grep BOOST\u LIB\u版本

        13
  •  -1
  •   Haresh Karnan    8 年前

    可能已经有答案了,但您可以尝试这个简单的程序来确定您是否安装了boost以及安装了什么:

    #include<boost/version.hpp>
    #include<iostream>
    using namespace std;
    int main()
    {
    cout<<BOOST_VERSION<<endl;
    return 0;
    }