Comment déterminer la version Boost sur un système?


140

Existe-t-il un moyen rapide de déterminer la version des bibliothèques Boost C ++ sur un système?

Réponses:


97

Boostez les macros d'information . Vous avez besoin:BOOST_VERSION


76
Si vous voulez le découvrir manuellement (plutôt que dans le code), allez dans le répertoire include et ouvrez version.hpp. BOOST_VERSIONprend un peu de déchiffrement, mais BOOST_LIB_VERSIONc'est assez clair. La valeur du mien est actuellement de"1_42"
TED

4
Sous Linux, l'utilisation de "ldd yourprogramname" vous montrera souvent quelle version de boost était liée à votre programme (ce qui a la possibilité d'indiquer une différence par rapport à l'en-tête, bien qu'il soit peu probable que ce soit différent).
Homer6

10
Aussi sous linux,dpkg -S /usr/include/boost/version.hpp
Efreeto

8
Vous pouvez rechercher rapidement la valeur actuelle via par exemple echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E -- par exemple sur Fedora 26: 106300 (soit 1,63)
maxschlepzig

69

Testé avec 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;

Sortie: Utilisation de Boost 1.51.0

Testé avec les versions boost 1.51.0 à 1.65.0


5
quelle dédicace monsieur @Vertexwahn
Vishal Sharma

4
Pour briser la séquence de @Vertexwahn: Fonctionne également avec 1.60.0 et 1.61.0 .
m8mble

4
@Vertexwahn Ils devraient vous embaucher pour tout type de changement de version.
PascalVKooten

14
Pourquoi ne pas simplement mettre à jour votre réponse avec quelque chose comme: "Fonctionne avec toutes les versions de Boost (version testée 1.51 à 1.63)." - au lieu de déborder la section des commentaires ...
maxschlepzig

62

Si vous avez seulement besoin de savoir pour votre propre information, il suffit de regarder dans /usr/include/boost/version.hpp (Ubuntu 13.10) et de lire les informations directement


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

Mise à jour: la réponse a été corrigée.


24
Pourquoi pas simplement std::cout << "Boost version: " << BOOST_LIB_VERSION;:?
TED du

6
L'exécution de ce code a produit "Boost version: 0.199.60" alors que la version de TED a produit "Boost version: 1_48"
Homer6

5
Cela ne marche pas. Pourquoi quelqu'un voterait-il pour cela? Quelqu'un a-t-il réellement exécuté ce code et obtenu une sortie utile? Je suppose que les gens voient «hexadécimal» et pensent qu'il doit être correct.
JDiMatteo

1
Ce n'est pas correct. La version Boost est stockée de manière décimale et non hexagonale.
Maciek D.

1
Sauf que maintenant c'est la même chose que l'autre réponse ...
eis

13

En fonction de la façon dont vous avez installé boost et du système d'exploitation que vous utilisez, vous pouvez également essayer ce qui suit:

dpkg -s libboost-dev | grep 'Version'

Est-ce libboost-devla même chose que "boost"? Parce que j'en ai beaucoup /usr/include/boostmais votre commande donne is not installed.
Ben le

7

Boost installé sur OS X en utilisant homebrew a le version.hppfichier souhaité dans /usr/local/Cellar/boost/<version>/include/boost/version.hpp(notez que la version est déjà mentionnée dans le chemin).

Je suppose que le moyen le plus rapide de déterminer la version sur tout système de type UNIX sera de rechercher boostdans /usr:

find /usr -name "boost"


4

Quant à moi, vous pouvez d'abord (trouver version.hpp la variable de version est dedans, si vous savez où elle se trouve (dans ubuntu, elle est généralement /usr/include/boost/version.hppinstallée par défaut)):

 locate `boost/version.hpp`

Deuxième émission, c'est la version par:

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

ou

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

Quant à moi, j'ai deux versions boost installées dans mon système. Sortie comme ci-dessous:

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"

Afficher la version installée localement:

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

Je me suis demandé le numéro de version du boost dans bash .

J'ai fini par faire ce qui suit, qui stocke le code de version dans une variable, supprimant les erreurs. Ceci utilise l'exemple de maxschlepzig dans les commentaires de la réponse acceptée. (Je ne peux pas commenter, je n'ai pas 50 représentants)

Je sais que cela a été répondu il y a longtemps. Mais je n'ai pas trouvé comment le faire en bash nulle part. J'ai donc pensé que cela pourrait aider quelqu'un avec le même problème. Cela devrait également fonctionner quel que soit l'endroit où Boost est installé, tant que le comilateur peut le trouver. Et il vous donnera le numéro de version qui est réellement utilisé par le comilateur, lorsque plusieurs versions sont installées.

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

Belle approche et comme ça, il utilise <boost / version.hpp> plutôt qu'un chemin explicite.
hashlock


0

Si un boost installé sur macOS via Homebrew, on verra probablement la (les) version (s) boost installée (s) avec:

ls /usr/local/Cellar/boost*

-1

Peut-être avez-vous déjà une réponse, mais vous pouvez essayer ce programme simple pour déterminer si et quelle installation de boost vous avez:

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

8
On y a déjà répondu, il y a près de dix ans, et vous pouvez le voir clairement en lisant simplement cette page.
Courses de légèreté en orbite
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.