¿Cómo determinar la versión Boost en un sistema?

140

¿Hay alguna forma rápida de determinar la versión de las bibliotecas Boost C ++ en un sistema?

Jan Deinhard
fuente

Respuestas:

97

Impulsar macros informativas . Necesitas:BOOST_VERSION

AraK
fuente
76
Si desea resolverlo manualmente (en lugar de en el código), vaya al directorio de inclusión y abra version.hpp. BOOST_VERSIONtoma un poco de desciframiento, pero BOOST_LIB_VERSIONes bastante claro. El valor de la mía es actualmente"1_42"
TED
44
En Linux, el uso de "ldd yourpronamename" a menudo le mostrará qué versión de boost estaba vinculada a su programa (que tiene la posibilidad de indicar una diferencia con respecto al encabezado, aunque es poco probable que sea diferente).
Homer6
10
También en Linux,dpkg -S /usr/include/boost/version.hpp
Efreeto
8
Puede buscar rápidamente el valor actual a través de echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E -, por ejemplo, por ejemplo, en Fedora 26: 106300 (es decir, 1.63)
maxschlepzig
69

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

Salida: utilizando Boost 1.51.0

Probado con las versiones de impulso 1.51.0 a 1.65.0

Vertexwahn
fuente
55
qué dedicación señor @Vertexwahn
Vishal Sharma
44
Para romper la racha de @Vertexwahn: Funciona también con 1.60.0 y 1.61.0 .
m8mble
44
@Vertexwahn Deberían contratarlo para cualquier tipo de cambio de versión.
PascalVKooten
14
¿Por qué no actualiza su respuesta con algo como: "Funciona con todas las versiones de Boost (versión probada 1.51 a 1.63)". - en lugar de desbordar la sección de comentarios ...
maxschlepzig
62

Si solo necesita saber su propia información, solo busque en /usr/include/boost/version.hpp (Ubuntu 13.10) y lea la información directamente

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

Actualización: la respuesta ha sido corregida.

hkaiser
fuente
24
¿Por qué no solo std::cout << "Boost version: " << BOOST_LIB_VERSION;:?
TED
66
La ejecución de este código generó "Versión de refuerzo: 0.199.60", mientras que la versión de TED generó "Versión de refuerzo: 1_48"
Homer6 el
55
Esto no funciona ¿Por qué alguien votaría esto? ¿Alguien ha ejecutado este código y ha obtenido resultados útiles? Supongo que la gente ve "hechizo" y cree que debe ser correcto.
JDiMatteo
1
Esto no es correcto. La versión de refuerzo se almacena decimalmente, no hexagonalmente.
Maciek D.
1
Excepto que ahora es sólo lo mismo que la otra respuesta ...
EIS
13

Dependiendo de cómo haya instalado boost y qué sistema operativo esté ejecutando, también podría intentar lo siguiente:

dpkg -s libboost-dev | grep 'Version'
PM
fuente
¿Es libboost-devlo mismo que "impulsar"? Porque tengo mucho /usr/include/boostpero tu comando da is not installed.
Ben
7

Boost instalado en OS X usando homebrew tiene el version.hpparchivo deseado /usr/local/Cellar/boost/<version>/include/boost/version.hpp(tenga en cuenta que la versión ya se menciona en la ruta).

Supongo que la forma más rápida de determinar la versión en cualquier sistema similar a UNIX será buscar boosten /usr:

find /usr -name "boost"

Kamil S Jaron
fuente
4

En cuanto a mí, primero puede (encontrar version.hpp, la variable de versión está en él, si sabe dónde está (en ubuntu, generalmente se /usr/include/boost/version.hppinstala por defecto):

 locate `boost/version.hpp`

Segundo espectáculo es versión de:

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

o

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

En cuanto a mí, tengo dos versiones mejoradas instaladas en mi sistema. Salida de la siguiente manera:

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"

Mostrar versión instalada local:

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
fuente
3

Me sorprendió encontrar el número de versión de impulso en bash .

Terminé haciendo lo siguiente, que almacena el código de versión en una variable, suprimiendo los errores. Esto utiliza el ejemplo de maxschlepzig en los comentarios de la respuesta aceptada. (No puedo comentar, no tengo 50 Rep)

Sé que esto ha sido respondido hace mucho tiempo. Pero no pude encontrar cómo hacerlo en bash en ningún lado. Entonces pensé que esto podría ayudar a alguien con el mismo problema. Además, esto debería funcionar sin importar dónde esté instalado boost, siempre que el comiler pueda encontrarlo. Y le dará el número de versión que el comiler usa de manera aguda, cuando tiene varias versiones instaladas.

{
VERS=$(echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -s -x c++ -E - | grep "^[^#;]")
} &> /dev/null
JulianW
fuente
Enfoque agradable y así utiliza <boost / version.hpp> en lugar de una ruta explícita.
hashlock el
0

Si un impulso instalado en macOS a través de Homebrew, es probable que vea las versiones de impulso instaladas con:

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

Es posible que ya se haya respondido, pero puede probar este sencillo programa para determinar si y qué instalación de impulso tiene:

#include<boost/version.hpp>
#include<iostream>
using namespace std;
int main()
{
cout<<BOOST_VERSION<<endl;
return 0;
}
Haresh Karnan
fuente
8
Ya se ha respondido, hace casi una década, y puedes verlo simplemente leyendo esta página.
Carreras de ligereza en órbita