Come determinare la versione di Boost su un sistema?


140

Esiste un modo rapido per determinare la versione delle librerie Boost C ++ su un sistema?

Risposte:


97

Potenzia le macro informative . Hai bisogno:BOOST_VERSION


76
Se vuoi capirlo manualmente (piuttosto che nel codice), vai alla directory include e apri version.hpp. BOOST_VERSIONrichiede un po 'di decifrazione, ma BOOST_LIB_VERSIONè abbastanza chiaro. Il mio valore è attualmente"1_42"
TED

4
In Linux, l'uso di "ldd yourprogramname" ti mostrerà spesso quale versione di boost è stata collegata al tuo programma (che ha la possibilità di indicare una differenza dall'intestazione, anche se è improbabile che sia diversa).
Homer6

10
Anche in Linux,dpkg -S /usr/include/boost/version.hpp
Efreeto,

8
Puoi cercare rapidamente il valore corrente tramite ad es. echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E -- ad esempio su Fedora 26: 106300 (ovvero 1,63)
maxschlepzig

69

Testato con 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;

Output: utilizzando Boost 1.51.0

Testato con le versioni boost da 1.51.0 a 1.65.0


5
che dedizione signore @Vertexwahn
Vishal Sharma,

4
Per interrompere la serie di @Vertexwahn: Funziona anche con 1.60.0 e 1.61.0 .
m8mble

4
@Vertexwahn Dovrebbero assumerti per qualsiasi tipo di modifica del rilascio.
PascalVKooten,

14
Perché non aggiorni semplicemente la tua risposta con qualcosa del tipo: "Funziona con tutte le versioni di Boost (versione testata da 1.51 a 1.63)". - Invece di traboccare la sezione dei commenti ...
maxschlepzig

62

Se hai solo bisogno di sapere le tue informazioni, guarda in /usr/include/boost/version.hpp (Ubuntu 13.10) e leggi le informazioni direttamente


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

Aggiornamento: la risposta è stata corretta.


24
Perché non solo std::cout << "Boost version: " << BOOST_LIB_VERSION;:?
TED

6
L'esecuzione di questo codice ha prodotto "Boost version: 0.199.60" mentre la versione di TED ha prodotto "Boost version: 1_48"
Homer6

5
Questo non funziona Perché qualcuno dovrebbe votare questo? Qualcuno ha effettivamente eseguito questo codice e ottenuto risultati utili? Immagino che la gente veda "hex" e capisca che deve essere corretto.
JDiMatteo,

1
Questo non è corretto La versione boost viene memorizzata in modo decimale, non esagonale.
Maciek D.

1
Tranne ora, è esattamente la stessa cosa dell'altra risposta ...
eis,

13

A seconda di come hai installato boost e di quale sistema operativo stai eseguendo, puoi anche provare quanto segue:

dpkg -s libboost-dev | grep 'Version'

È libboost-devlo stesso di "boost"? Perché ho molto in /usr/include/boostma il tuo comando dà is not installed.
Ben

7

Boost installato su OS X usando homebrew ha desiderato il version.hppfile in /usr/local/Cellar/boost/<version>/include/boost/version.hpp(nota che la versione è già menzionata nel percorso).

Immagino che il modo più veloce per determinare la versione su qualsiasi sistema simile a UNIX sarà quello di cercare boostin /usr:

find /usr -name "boost"


4

Per quanto mi riguarda, puoi prima (trovare version.hpp la variabile versione è in essa, se sai dove si trova (in Ubuntu di solito in /usr/include/boost/version.hppper impostazione predefinita)):

 locate `boost/version.hpp`

Secondo spettacolo è la versione di:

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

o

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

Per quanto mi riguarda, ho due boost di versione installati nel mio sistema. Uscita come di seguito:

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"

Mostra versione installata locale:

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

Ho tentato di scoprire il numero di versione boost in bash .

Finì per fare quanto segue, che memorizza il codice della versione in una variabile, eliminando gli errori. Questo utilizza l'esempio di maxschlepzig nei commenti della risposta accettata. (Non posso commentare, non ho 50 Rep)

So che è stato risposto molto tempo fa. Ma non sono riuscito a trovare il modo di farlo in bash da nessuna parte. Quindi ho pensato che questo potesse aiutare qualcuno con lo stesso problema. Anche questo dovrebbe funzionare indipendentemente da dove sia installato boost, purché il comiler riesca a trovarlo. E ti darà il numero di versione che viene usato abitualmente dal comiler, quando hai più versioni installate.

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

Approccio gradevole e come quello usa <boost / version.hpp> piuttosto che un percorso esplicito.
hashlock,


0

Se un boost installato su macOS tramite Homebrew, è probabile che vengano visualizzate le versioni di boost installate con:

ls /usr/local/Cellar/boost*

-1

Potrebbe già avere una risposta, ma puoi provare questo semplice programma per determinare se e quale installazione di boost hai:

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

8
Si è già stato risposto, quasi un decennio fa, e si può vedere chiaramente che semplicemente leggendo questa pagina.
Razze di leggerezza in orbita
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.