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

Jan*_*ard 133 c++ boost version

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

Ara*_*raK 90

提升信息宏.你需要:BOOST_VERSION

  • 如果要手动计算(而不是在代码中),请转到include目录,然后打开version.hpp.`BOOST_VERSION`需要一些解密,但`BOOST_LIB_VERSION`非常清楚.我的价值目前是"1_42" (75认同)
  • 同样在linux中,`dpkg -S/usr/include/boost/version.hpp` (10认同)
  • 您可以通过例如`echo -e'快速查找当前值#include <boost/version.hpp> \n ONBOOST_VERSION'| gcc -x c ++ -E -` - 例如Fedora 26:106300(即1.63) (7认同)
  • 在linux中,使用"ldd yourprogramname"通常会显示哪个版本的boost与你的程序相关联(它有可能指示与标题的差异,尽管它不太可能不同). (4认同)

Ver*_*ahn 66

使用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;
Run Code Online (Sandbox Code Playgroud)

输出:使用Boost 1.51.0

使用升级版1.51.0至1.65.0进行测试

  • 为什么不用以下内容更新您的答案:'适用于所有Boost版本(测试版本1.51至1.63). - 而不是溢出评论部分...... (14认同)
  • 什么奉献先生@Vertexwahn (5认同)
  • 打破@Vertexwahn的连胜:同样适用于[1.60.0](http://www.boost.org/doc/libs/1_60_0/boost/version.hpp)和[1.61.0](http:// www.boost.org/doc/libs/1_61_0/boost/version.hpp). (4认同)
  • @Vertexwahn他们应该雇用你进行任何类型的发布更改. (4认同)
  • 也可以使用boost 1.58.0和1.59.0 (2认同)

use*_*262 56

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


hka*_*ser 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;
}
Run Code Online (Sandbox Code Playgroud)

更新:答案已得到修复.

  • 为什么不呢:`std :: cout <<"Boost版本:"<< BOOST_LIB_VERSION;`? (24认同)
  • 运行此代码输出"Boost version:0.199.60",而TED的版本输出"Boost version:1_48" (6认同)
  • 这不起作用.为什么会有人支持这个?有没有人实际运行此代码并获得有用的输出?我想人们看到"十六进制"并认为它必须是正确的. (5认同)
  • 但现在它与[另一个答案](http://stackoverflow.com/a/13084616/365237)是一样的...... (2认同)

P-M*_*P-M 11

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

dpkg -s libboost-dev | grep 'Version'
Run Code Online (Sandbox Code Playgroud)


Kam*_*ron 6

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

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

find /usr -name "boost"


Jay*_*llo 6

对我来说,你可以先(找到 version.hpp 中的版本变量,如果你知道它在哪里(在 ubuntu 中,它通常在/usr/include/boost/version.hpp默认情况下安装)):

 locate `boost/version.hpp`
Run Code Online (Sandbox Code Playgroud)

第二个显示它的版本:

 grep BOOST_LIB_VERSION /usr/include/boost/version.hpp
Run Code Online (Sandbox Code Playgroud)

或者

  grep BOOST_VERSION /usr/include/boost/version.hpp.
Run Code Online (Sandbox Code Playgroud)

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

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"
Run Code Online (Sandbox Code Playgroud)

显示本地安装的版本:

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"
Run Code Online (Sandbox Code Playgroud)


Use*_*645 6

@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)"
Run Code Online (Sandbox Code Playgroud)

给我installed boost version: 1.71.0


小智 5

我努力找出bash 中的 boost 版本号。

最终执行以下操作,将版本代码存储在变量中,以抑制错误。这在已接受答案的评论中使用了来自 maxschlepzig 的示例。(不能评论,没有 50 代表)

我知道很久以前就已经回答了这个问题。但是我在任何地方都找不到如何在 bash 中做到这一点。所以我认为这可能会帮助有同样问题的人。此外,无论 boost 安装在哪里,只要编译器可以找到它,这都应该有效。当您安装了多个版本时,它将为您提供编译器实际使用的版本号。

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