Wie bestimme ich die Boost-Version auf einem System?

139

Gibt es eine schnelle Möglichkeit, die Version der Boost C ++ - Bibliotheken auf einem System zu ermitteln?

Jan Deinhard
quelle

Antworten:

97

Informationsmakros verbessern . Du brauchst:BOOST_VERSION

AraK
quelle
76
Wenn Sie es manuell herausfinden möchten (anstatt im Code), gehen Sie zum Include-Verzeichnis und öffnen Sie version.hpp. BOOST_VERSIONbraucht ein bisschen Entschlüsselung, ist aber BOOST_LIB_VERSIONziemlich klar. Der Wert von mir ist derzeit"1_42"
TED
4
Unter Linux zeigt die Verwendung von "ldd yourprogramname" häufig an, welche Version von boost mit Ihrem Programm verknüpft wurde (was die Möglichkeit bietet, einen Unterschied zum Header anzuzeigen, obwohl es unwahrscheinlich ist, dass er sich unterscheidet).
Homer6
10
Auch in Linux,dpkg -S /usr/include/boost/version.hpp
Efreeto
8
Sie können den aktuellen Wert schnell nachschlagen, z. echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E -B. über Fedora 26: 106300 (dh 1,63)
maxschlepzig
69

Getestet mit 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;

Ausgabe: Verwenden von Boost 1.51.0

Getestet mit den Boost-Versionen 1.51.0 bis 1.65.0

Vertexwahn
quelle
5
Was für eine Widmung Sir @Vertexwahn
Vishal Sharma
4
Um @Vertexwahns Streifen zu brechen: Funktioniert auch mit 1.60.0 und 1.61.0 .
m8mble
4
@Vertexwahn Sie sollten Sie für jede Art von Release-Änderungen einstellen.
PascalVKooten
14
Warum aktualisieren Sie Ihre Antwort nicht einfach mit etwas wie: "Funktioniert mit allen Boost-Versionen (getestete Version 1.51 bis 1.63)." - anstatt den Kommentarbereich zu überlaufen ...
maxschlepzig
62

Wenn Sie nur Ihre eigenen Informationen benötigen, schauen Sie einfach in /usr/include/boost/version.hpp (Ubuntu 13.10) nach und lesen Sie die Informationen direkt

user1245262
quelle
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;
}

Update: Die Antwort wurde behoben.

hkaiser
quelle
24
Warum nicht einfach : std::cout << "Boost version: " << BOOST_LIB_VERSION;?
TED
6
Beim Ausführen dieses Codes wurde "Boost-Version: 0.199.60" ausgegeben, während die TED-Version "Boost-Version: 1_48"
ausgab
5
Das funktioniert nicht. Warum sollte jemand dies befürworten? Hat jemand diesen Code tatsächlich ausgeführt und nützliche Ausgaben erhalten? Ich denke, die Leute sehen "hex" und denken, dass es korrekt sein muss.
JDiMatteo
1
Das ist nicht richtig. Die Boost-Version wird dezimal und nicht hexagonal gespeichert.
Maciek D.
1
Außer jetzt ist es genau das Gleiche wie die andere Antwort ...
Eis
13

Abhängig davon, wie Sie Boost installiert haben und welches Betriebssystem Sie ausführen, können Sie auch Folgendes versuchen:

dpkg -s libboost-dev | grep 'Version'
PM
quelle
Ist libboost-devdas gleiche wie "Boost"? Weil ich viel drin habe, /usr/include/boostaber dein Befehl gibt is not installed.
Ben
7

Boost, das unter OS X mit Homebrew installiert wurde, hat die gewünschte version.hppDatei in /usr/local/Cellar/boost/<version>/include/boost/version.hpp(beachten Sie, dass die Version bereits im Pfad erwähnt ist).

Ich denke, der schnellste Weg, um die Version auf einem UNIX-ähnlichen System zu bestimmen, ist die Suche boostin /usr:

find /usr -name "boost"

Kamil S Jaron
quelle
4

Was mich betrifft, können Sie zuerst (finden Sie version.hpp, in der sich die Versionsvariable befindet, wenn Sie wissen, wo sie sich befindet (in Ubuntu normalerweise /usr/include/boost/version.hppstandardmäßig installiert)):

 locate `boost/version.hpp`

Die zweite Show ist die Version von:

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

oder

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

Ich habe zwei Versions-Boosts in meinem System installiert. Ausgabe wie folgt:

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"

Lokal installierte Version anzeigen:

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"
Jayhello
quelle
3

Ich habe mich bemüht, die Boost-Versionsnummer in Bash herauszufinden .

Am Ende wurde Folgendes ausgeführt, wodurch der Versionscode in einer Variablen gespeichert und die Fehler unterdrückt wurden. Dies verwendet das Beispiel von maxschlepzig in den Kommentaren der akzeptierten Antwort. (Kann nicht kommentieren, habe keine 50 Wiederholungen)

Ich weiß, dass dies vor langer Zeit beantwortet wurde. Aber ich konnte nirgendwo in Bash finden, wie es geht. Also dachte ich, das könnte jemandem mit dem gleichen Problem helfen. Dies sollte auch funktionieren, egal wo Boost installiert ist, solange der Comiler es finden kann. Und es gibt Ihnen die Versionsnummer, die vom Comiler tatsächlich verwendet wird, wenn Sie mehrere Versionen installiert haben.

{
VERS=$(echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -s -x c++ -E - | grep "^[^#;]")
} &> /dev/null
JulianW
quelle
Netter Ansatz und so verwendet es <boost / version.hpp> anstatt expliziten Pfad.
Hashlock
0

Wenn Sie einen Boost unter macOS über Homebrew installiert haben, sehen Sie wahrscheinlich die installierten Boost-Versionen mit:

ls /usr/local/Cellar/boost*
jakob.j
quelle
-1

Möglicherweise bereits beantwortet, aber Sie können dieses einfache Programm ausprobieren, um festzustellen, ob und welche Boost-Installation Sie haben:

#include<boost/version.hpp>
#include<iostream>
using namespace std;
int main()
{
cout<<BOOST_VERSION<<endl;
return 0;
}
Haresh Karnan
quelle
8
Es wurde bereits vor fast einem Jahrzehnt beantwortet, und Sie können dies deutlich sehen, indem Sie einfach diese Seite lesen.
Leichtigkeitsrennen im Orbit