¿Hay alguna forma rápida de determinar la versión de las bibliotecas Boost C ++ en un sistema?
¿Hay alguna forma rápida de determinar la versión de las bibliotecas Boost C ++ en un sistema?
Respuestas:
Impulsar macros informativas . Necesitas:BOOST_VERSION
dpkg -S /usr/include/boost/version.hpp
echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E -
, por ejemplo, por ejemplo, en Fedora 26: 106300 (es decir, 1.63)
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
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
#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.
std::cout << "Boost version: " << BOOST_LIB_VERSION;
:?
Boost instalado en OS X usando homebrew tiene el version.hpp
archivo 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 boost
en /usr
:
find /usr -name "boost"
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.hpp
instala 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"
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
Otra forma de obtener la versión actual de impulso (Linux Ubuntu):
~$ dpkg -s libboost-dev | grep Version
Version: 1.58.0.1ubuntu1
Ref: https://www.osetc.com/en/how-to-install-boost-on-ubuntu-16-04-18-04-linux.html
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;
}
BOOST_VERSION
toma un poco de desciframiento, peroBOOST_LIB_VERSION
es bastante claro. El valor de la mía es actualmente"1_42"