Czy istnieje szybki sposób określenia wersji bibliotek Boost C ++ w systemie?
Czy istnieje szybki sposób określenia wersji bibliotek Boost C ++ w systemie?
Odpowiedzi:
Wzmocnij makra informacyjne . Potrzebujesz:BOOST_VERSION
dpkg -S /usr/include/boost/version.hpp
echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E -
- na przykład w Fedorze 26: 106300 (tj. 1,63)
Testowane z doładowaniem 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;
Wyjście: przy użyciu Boost 1.51.0
Testowane z wersjami boost od 1.51.0 do 1.65.0
Jeśli potrzebujesz tylko własnych informacji, po prostu zajrzyj do /usr/include/boost/version.hpp (Ubuntu 13.10) i przeczytaj informacje bezpośrednio
#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;
}
Aktualizacja: odpowiedź została naprawiona.
std::cout << "Boost version: " << BOOST_LIB_VERSION;
:?
W zależności od tego, jak zainstalowałeś Boost i jaki system operacyjny używasz, możesz również wypróbować następujące rozwiązania:
dpkg -s libboost-dev | grep 'Version'
libboost-dev
to samo co „doładowanie”? Ponieważ mam dużo, /usr/include/boost
ale twoje polecenie daje is not installed
.
Boost zainstalowany na OS X przy użyciu homebrew ma żądany version.hpp
plik w /usr/local/Cellar/boost/<version>/include/boost/version.hpp
(uwaga, wersja jest już wymieniona w ścieżce).
Wydaje mi się, że najszybszym sposobem określenia wersji w dowolnym systemie podobnym do UNIX będzie wyszukiwanie boost
w /usr
:
find /usr -name "boost"
Jeśli chodzi o mnie, możesz najpierw (znajdź version.hpp zmienną version w nim, jeśli wiesz, gdzie to jest (w Ubuntu zwykle /usr/include/boost/version.hpp
jest to domyślnie instalacja)):
locate `boost/version.hpp`
Po drugie pokaż jego wersję:
grep BOOST_LIB_VERSION /usr/include/boost/version.hpp
lub
grep BOOST_VERSION /usr/include/boost/version.hpp.
Jeśli chodzi o mnie, mam zainstalowane w systemie dwie wersje doładowania. Wyjście jak poniżej:
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"
Pokaż zainstalowaną lokalnie wersję:
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"
Zacząłem szukać numeru wersji doładowania w bash .
Skończyło się na tym, że przechowuje kod wersji w zmiennej, pomijając błędy. Wykorzystuje to przykład z maxschlepziga w komentarzach do zaakceptowanej odpowiedzi. (Nie mogę komentować, nie mam 50 przedstawicieli)
Wiem, że odpowiedź na to pytanie udzielono dawno temu. Ale nigdzie nie mogłem znaleźć, jak to zrobić w bash. Pomyślałem więc, że to może pomóc komuś z tym samym problemem. Powinno to również działać bez względu na to, gdzie jest zainstalowane przyspieszenie, o ile kompilator może je znaleźć. I poda numer wersji, który jest faktycznie używany przez kompilator, gdy masz zainstalowanych wiele wersji.
{
VERS=$(echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -s -x c++ -E - | grep "^[^#;]")
} &> /dev/null
Inny sposób na uzyskanie aktualnej wersji boost (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
Być może już odpowiedź, ale możesz wypróbować ten prosty program, aby określić, czy i jaką masz instalację boost:
#include<boost/version.hpp>
#include<iostream>
using namespace std;
int main()
{
cout<<BOOST_VERSION<<endl;
return 0;
}
BOOST_VERSION
wymaga trochę rozszyfrowania, aleBOOST_LIB_VERSION
jest całkiem jasne. Moja wartość to obecnie"1_42"