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

时间:2010-09-14 12:08:52

标签: c++ boost version

有没有快速的方法来确定系统上Boost C ++库的版本?

13 个答案:

答案 0 :(得分:82)

Boost Informational Macros。您需要:BOOST_VERSION

答案 1 :(得分:64)

使用boost 1.51.0测试:

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

输出:使用Boost 1.51.0

使用升级版1.51.0测试至1.65.0

答案 2 :(得分:52)

如果您只需了解自己的信息,请查看/usr/include/boost/version.hpp(Ubuntu 13.10)并直接阅读信息

答案 3 :(得分:41)

#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;
}

更新:答案已得到修复。

答案 4 :(得分:9)

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

dpkg -s libboost-dev | grep 'Version'

答案 5 :(得分:5)

使用自制软件在OS X上安装的Boost在version.hpp中有所需的/usr/local/Cellar/boost/<version>/include/boost/version.hpp文件(请注意,该版本已在路径中提及)。

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

find /usr -name "boost"

答案 6 :(得分:2)

对于我来说,您可以首先(找到version.hpp版本变量,如果您知道它在哪里(在ubuntu中,通常在/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.

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

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"

答案 7 :(得分:2)

获取当前增强版本的另一种方法(Linux Ubuntu):

~$ 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

答案 8 :(得分:1)

如果通过Homebrew在macOS上安装了Boost版本,则可能会看到带有以下内容的Boost版本:

ls /usr/local/Cellar/boost*

答案 9 :(得分:1)

@Vertexwahns回答,但用bash编写。对于懒惰的人:

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

答案 10 :(得分:1)

cat /usr/local/include/boost/version.hpp | grep BOOST_LIB_VERSION

答案 11 :(得分:0)

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

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

答案 12 :(得分:0)

我竭力在 bash 中找到增强版本号。

最终执行以下操作,该操作将版本代码存储在变量中,以防止出现错误。这将使用maxschlepzig中的示例作为接受答案的注释。 (无法发表评论,没有50个代表)

我知道这个问题早已得到解决。但是我找不到在任何地方用bash进行操作的方法。因此,我认为这可能会对遇到相同问题的人有所帮助。无论在何处安装boost,只要编译器可以找到它,它都应该起作用。当您安装了多个版本时,它将为您提供编译器手动使用的版本号。

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