Чи є швидкий спосіб визначити версію бібліотек Boost C ++ у системі?
Чи є швидкий спосіб визначити версію бібліотек Boost C ++ у системі?
Відповіді:
Підвищіть Інформаційні макрокоманди . Тобі потрібно:BOOST_VERSION
dpkg -S /usr/include/boost/version.hpp
echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E -
наприклад, у Fedora 26: 106300 (тобто 1,63)
Тестовано з підвищенням 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;
Вихід: Використання Boost 1.51.0
Тестовано з прискореними версіями 1.51.0 до 1.65.0
Якщо вам потрібно знати лише власну інформацію, просто загляньте в /usr/include/boost/version.hpp (Ubuntu 13.10) і прочитайте інформацію безпосередньо
#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;
}
Оновлення: відповідь виправлено.
std::cout << "Boost version: " << BOOST_LIB_VERSION;
:?
Boost, встановлений на OS X за допомогою homebrew, має бажаний version.hpp
файл у /usr/local/Cellar/boost/<version>/include/boost/version.hpp
(зауважте, що версія вже згадується у шляху).
Я припускаю , що найшвидший спосіб визначити версію на будь-який UNIX-подібної системи буде шукати boost
в /usr
:
find /usr -name "boost"
Як на мене, ви можете спершу (знайти в ньому змінну версії. Якщо ви знаєте, де вона знаходиться (в ubuntu вона зазвичай /usr/include/boost/version.hpp
встановлена за замовчуванням)):
locate `boost/version.hpp`
Друге шоу, це версія:
grep BOOST_LIB_VERSION /usr/include/boost/version.hpp
або
grep BOOST_VERSION /usr/include/boost/version.hpp.
Що стосується мене, у мене в системі встановлено дві прискорення версії. Виведіть, як показано нижче:
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"
Показати встановлену локальну версію:
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"
Я затримався, щоб дізнатися номер підсилювальної версії в bash .
На завершення робиться наступне, що зберігає код версії в змінній, пригнічуючи помилки. Для цього використовується приклад maxschlepzig в коментарях до прийнятої відповіді. (Не можу коментувати, не маю 50 повторень)
Я знаю, що на це відповіли давно. Але я не міг ніде знайти, як це зробити в баш. Тому я подумав, що це може допомогти комусь із тією ж проблемою. Крім того, це повинно працювати незалежно від того, де встановлено прискорення, доки комлер може його знайти. І це дасть вам номер версії, який акутно використовується компілером, коли у вас встановлено кілька версій.
{
VERS=$(echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -s -x c++ -E - | grep "^[^#;]")
} &> /dev/null
Ще один спосіб отримати поточну прискорену версію (Linux Ubuntu):
~$ dpkg -s libboost-dev | grep Version
Version: 1.58.0.1ubuntu1
Посилання: https://www.osetc.com/en/how-to-install-boost-on-ubuntu-16-04-18-04-linux.html
Ви вже можете відповісти, але ви можете спробувати цю просту програму, щоб визначити, чи є та яка установка прискорення у вас:
#include<boost/version.hpp>
#include<iostream>
using namespace std;
int main()
{
cout<<BOOST_VERSION<<endl;
return 0;
}
BOOST_VERSION
займає трохи розшифровки, алеBOOST_LIB_VERSION
досить чітко. Наразі значення шахти"1_42"