Existe uma maneira rápida de determinar a versão das bibliotecas Boost C ++ em um sistema?
Existe uma maneira rápida de determinar a versão das bibliotecas Boost C ++ em um sistema?
Respostas:
Aumente as macros informativas . Você precisa:BOOST_VERSION
dpkg -S /usr/include/boost/version.hpp
echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E -
- por exemplo, no Fedora 26: 106.300 (ou seja 1,63)
Testado com o impulso 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;
Saída: Usando o Boost 1.51.0
Testado com versões de aumento 1.51.0 a 1.65.0
Se você só precisa saber suas próprias informações, basta olhar em /usr/include/boost/version.hpp (Ubuntu 13.10) e ler as informações diretamente
#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;
}
Atualização: a resposta foi corrigida.
std::cout << "Boost version: " << BOOST_LIB_VERSION;
:?
O impulso instalado no OS X usando o homebrew tem o version.hpp
arquivo desejado /usr/local/Cellar/boost/<version>/include/boost/version.hpp
(observe que a versão já foi mencionada no caminho).
Eu acho que a maneira mais rápida de determinar a versão em qualquer sistema semelhante ao UNIX será procurar boost
em /usr
:
find /usr -name "boost"
Quanto a mim, você pode primeiro (encontrar version.hpp, a variável version está nela, se você souber onde está (no ubuntu, normalmente, /usr/include/boost/version.hpp
por instalação padrão)):
locate `boost/version.hpp`
Segundo show, sua versão é por:
grep BOOST_LIB_VERSION /usr/include/boost/version.hpp
ou
grep BOOST_VERSION /usr/include/boost/version.hpp.
Quanto a mim, tenho duas versões de reforço instaladas no meu sistema. Saída como abaixo:
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 versão 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"
Eu tentei descobrir o número da versão do impulso no bash .
Acabou fazendo o seguinte, que armazena o código da versão em uma variável, suprimindo os erros. Isso usa o exemplo de maxschlepzig nos comentários da resposta aceita. (Não pode comentar, não possui 50 representantes)
Eu sei que isso foi respondido há muito tempo. Mas não consegui encontrar como fazê-lo no bash em qualquer lugar. Então, pensei que isso poderia ajudar alguém com o mesmo problema. Além disso, isso deve funcionar, não importa onde o impulso esteja instalado, desde que o comiler possa encontrá-lo. E ele fornecerá o número da versão que é usada de forma aguda pelo compilador, quando você tiver várias versões instaladas.
{
VERS=$(echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -s -x c++ -E - | grep "^[^#;]")
} &> /dev/null
Outra maneira de obter a versão atual do 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
Talvez você já tenha respondido, mas você pode tentar este programa simples para determinar se e qual instalação do boost você possui:
#include<boost/version.hpp>
#include<iostream>
using namespace std;
int main()
{
cout<<BOOST_VERSION<<endl;
return 0;
}
BOOST_VERSION
leva um pouco de decifração, masBOOST_LIB_VERSION
é bastante claro. O valor do meu é atualmente"1_42"