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


Answers:


97

提高信息宏。你需要:BOOST_VERSION


76
如果要手动(而不是代码内)进行查找,请转到include目录,然后打开version.hpp。BOOST_VERSION需要一些解密,但BOOST_LIB_VERSION很清楚。目前,我的价值是"1_42"
TED

4
在linux中,使用“ ldd yourprogramname”通常会向您显示将哪个版本的boost链接到您的程序(它有可能表明与标头的不同,尽管不太可能有所不同)。
Homer6

10
同样在Linux中,dpkg -S /usr/include/boost/version.hpp
Efreeto '16

8
您可以通过例如echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E --Fedora 26:106300(ie 1.63)
maxschlepzig

69

经过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

已测试Boost版本1.51.0至1.65.0


5
什么是奉献先生@Vertexwahn
Vishal Sharma

4
打破@Vertexwahn的连胜:也可以与1.60.01.61.0一起使用
m8mble

4
@Vertexwahn他们应该雇用您进行任何发行更改。
PascalVKooten

14
您为什么不只用以下内容更新答案:“适用于所有Boost版本(经过测试的1.51至1.63版本)。” -而不是溢出评论部分...
maxschlepzig

62

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


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

更新:答案已修复。


24
为什么不只是:std::cout << "Boost version: " << BOOST_LIB_VERSION;
TED

6
运行此代码将输出“ Boost版本:0.199.60”,而TED的版本将输出“ Boost版本:1_48”
Homer6

5
这行不通。为什么会有人支持呢?有人实际运行过此代码并获得了有用的输出吗?我想人们会看到“十六进制”并认为它必须正确。
JDiMatteo 2014年

1
这是不正确的。Boost版本以十进制存储,而不是六角形存储。
Maciek D.

1
除了现在,它与其他答案完全一样 ……
eis

13

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

dpkg -s libboost-dev | grep 'Version'

libboost-dev一样的“助推”?因为我有很多,/usr/include/boost但是你的命令给了is not installed

7

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

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

find /usr -name "boost"


4

对我而言,您可以先(在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"

3

我努力寻找bash中的boost版本号

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

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

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

不错的方法,并且它使用<boost / version.hpp>而不是显式路径。
哈希锁


0

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

ls /usr/local/Cellar/boost*

-1

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

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

8
已经早有答案,大约十年前,你可以清楚地看到,通过简单的阅读此页。
Lightness Races in Orbit
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.