Есть ли быстрый способ определить версию библиотек Boost C ++ в системе?
Есть ли быстрый способ определить версию библиотек Boost C ++ в системе?
Ответы:
Информационные макросы Boost . Тебе нужно: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 и какую ОС вы используете, вы также можете попробовать следующее:
dpkg -s libboost-dev | grep 'Version'
libboost-dev
то же самое, что и "буст"? Потому что у меня много дел, /usr/include/boost
но твоя команда дает is not installed
.
Boost, установленный в OS X с использованием homebrew, имеет желаемый version.hpp
файл /usr/local/Cellar/boost/<version>/include/boost/version.hpp
(обратите внимание, что версия уже указана в пути).
Думаю, самый быстрый способ определить версию в любой UNIX-подобной системе - это поискать boost
в /usr
:
find /usr -name "boost"
Что касается меня, вы можете сначала (найти version.hpp переменная версии в нем, если вы знаете, где она находится (в 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.
Что касается меня, у меня в системе установлено две версии Boost. Вывод, как показано ниже:
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"
Я изо всех сил пытался узнать номер версии boost в bash .
Закончил следующим, в котором код версии сохраняется в переменной, подавляя ошибки. Здесь используется пример из maxschlepzig в комментариях к принятому ответу. (Не могу комментировать, нет 50 Rep)
Я знаю, что на это давным-давно был дан ответ. Но я нигде не мог найти, как это сделать в bash. Поэтому я подумал, что это может помочь кому-то с той же проблемой. Также это должно работать независимо от того, где установлен boost, если компилятор может его найти. И он даст вам номер версии, который фактически используется компилятором, если у вас установлено несколько версий.
{
VERS=$(echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -s -x c++ -E - | grep "^[^#;]")
} &> /dev/null
Другой способ получить текущую версию Boost (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
@Vertexwahns ответ, но написанный на bash. Для ленивых:
boost_version=$(cat /usr/include/boost/version.hpp | grep define | grep "BOOST_VERSION " | cut -d' ' -f3)
echo "installed boost version: $(echo "$boost_version / 100000" | bc).$(echo "$boost_version / 100 % 1000" | bc).$(echo "$boost_version % 100 " | bc)"
Дает мне installed boost version: 1.71.0
Возможно, уже есть ответ, но вы можете попробовать эту простую программу, чтобы определить, какая у вас установка boost:
#include<boost/version.hpp>
#include<iostream>
using namespace std;
int main()
{
cout<<BOOST_VERSION<<endl;
return 0;
}
BOOST_VERSION
требует немного расшифровки, ноBOOST_LIB_VERSION
довольно ясна. Стоимость моей в настоящее время"1_42"