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

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

173889 次浏览
#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;
}

更新: 答案已经修正。

包括 #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;

可能输出: Using Boost 1.75.0

使用 Boost 1.51.0到1.63、1.71.0和1.76.0到1.80.0进行测试

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

安装在 OS X 上的 Boost 使用自制程序已经在 /usr/local/Cellar/boost/<version>/include/boost/version.hpp中安装了所需的 version.hpp文件(注意,路径中已经提到了这个版本)。

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

find /usr -name "boost"

根据你的安装方式和你运行的操作系统,你也可以尝试以下方法:

dpkg -s libboost-dev | grep 'Version'

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

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

对我来说,你可以先找到 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"

我绞尽脑汁想找出 Bash中的升级版本号。

最后执行以下操作,将版本代码存储在一个变量中,从而抑制错误。这里使用的例子来自 maxschlepig,在接受的答案的注释中。(不能评论,没有50代表)

我知道这个问题很久以前就有答案了。但是我在任何地方都找不到如何在 bash 中做到这一点。所以我想这也许能帮到有同样问题的人。此外,只要编译器能够找到它,无论在哪里安装升级都应该可以工作。当您安装了多个版本时,它将给出编译器实际使用的版本号。

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

获得当前升级版本(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

如果你通过 Homebrew 在 macOS 上安装了升级,你可能会看到已安装的升级版本:

ls /usr/local/Cellar/boost*

@ 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

Cat/usr/local/include/ost/version. hpp | grep BOOST _ LIB _ VERION