Como determinar a versão do Boost em um sistema?


139

Existe uma maneira rápida de determinar a versão das bibliotecas Boost C ++ em um sistema?

Respostas:


97

Aumente as macros informativas . Você precisa:BOOST_VERSION


76
Se você quiser descobrir isso manualmente (em vez de no código), vá para o diretório de inclusão e abra version.hpp. BOOST_VERSIONleva um pouco de decifração, mas BOOST_LIB_VERSIONé bastante claro. O valor do meu é atualmente"1_42"
TED

4
No linux, o uso de "ldd yourprogramname" geralmente mostra qual versão do boost foi vinculada ao seu programa (que tem a possibilidade de indicar uma diferença do cabeçalho, embora seja improvável que seja diferente).
precisa saber é o seguinte

10
Também no linux,dpkg -S /usr/include/boost/version.hpp
Efreeto 29/04

8
Você pode rapidamente olhar para cima o valor atual através, por exemplo echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E -- por exemplo, no Fedora 26: 106.300 (ou seja 1,63)
maxschlepzig

69

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


5
que dedicação senhor @Vertexwahn
Vishal Sharma

4
Para quebrar a sequência de @Vertexwahn: Funciona também com 1.60.0 e 1.61.0 .
M8mble 07/07/19

4
@Vertexwahn Eles devem contratá-lo para qualquer tipo de alteração de versão.
PascalVKooten

14
Por que você não atualiza sua resposta com algo como: 'Funciona com todas as versões do Boost (versão testada 1.51 a 1.63)'. - em vez de sobrecarregar a seção de comentários ...
maxschlepzig

62

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


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

Atualização: a resposta foi corrigida.


24
Por que não apenas std::cout << "Boost version: " << BOOST_LIB_VERSION;:?
TED

6
A execução deste código emitido "versão Boost: 0.199.60", enquanto a versão de TED emitidas "versão Boost: 1_48"
Homer6

5
Isso não funciona. Por que alguém votaria nisso? Alguém realmente executou esse código e obteve uma saída útil? Eu acho que as pessoas veem "hexadecimal" e acham que deve estar correto.
JDiMatteo 9/10

1
Isso não está correto. A versão Boost é armazenada decimalmente, não hexagonalmente.
Maciek D.

1
Só que agora é apenas a mesma coisa que a outra resposta ...
EIS

13

Dependendo de como você instalou o boost e do sistema operacional em execução, você também pode tentar o seguinte:

dpkg -s libboost-dev | grep 'Version'

É libboost-devo mesmo que "impulso"? Porque eu tenho muito, /usr/include/boostmas seu comando cede is not installed.
Ben Ben

7

O impulso instalado no OS X usando o homebrew tem o version.hpparquivo 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 boostem /usr:

find /usr -name "boost"


4

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.hpppor 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"

3

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

Abordagem agradável e assim usa <boost / version.hpp> em vez de caminho explícito.
hashlock


0

Se um impulso instalado no macOS via Homebrew, é provável que você veja as versões de impulso instaladas com:

ls /usr/local/Cellar/boost*

-1

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

8
Ele tem já foram respondidas, há quase uma década, e você pode ver claramente que pela simples leitura desta página.
Lightness Races em órbita
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.