Як визначити версію Boost у системі?


Відповіді:


97

76
Якщо ви хочете розібратися вручну (а не в коді), перейдіть до каталогу include і відкрийте version.hpp. BOOST_VERSIONзаймає трохи розшифровки, але BOOST_LIB_VERSIONдосить чітко. Наразі значення шахти"1_42"
TED,

4
У Linux, використання "ldd yourprogramname" часто показує, яка версія прискорення була пов'язана з вашою програмою (яка має можливість вказати різницю від заголовка, хоча навряд чи буде іншою).
Homer6

10
Також у linux,dpkg -S /usr/include/boost/version.hpp
Efreeto

8
Ви можете швидко знайти поточне значення, наприклад, наприклад, echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E -наприклад, у Fedora 26: 106300 (тобто 1,63)
maxschlepzig

69

Тестовано з підвищенням 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


5
що присвячений сер @Vertexwahn
Vishal Sharma

4
Щоб перервати смугу @Vertexwahn: Працює також з 1.60.0 та 1.61.0 .
m8mble

4
@Vertexwahn Вони повинні найняти вас за будь-які зміни випусків.
PascalVKooten

14
Чому ви просто не оновите свою відповідь чимось на кшталт: "Працює з усіма версіями Boost (тестована версія 1.51 до 1.63)." - замість переповнення розділу коментарів ...
maxschlepzig

62

Якщо вам потрібно знати лише власну інформацію, просто загляньте в /usr/include/boost/version.hpp (Ubuntu 13.10) і прочитайте інформацію безпосередньо


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

Оновлення: відповідь виправлено.


24
Чому б не просто std::cout << "Boost version: " << BOOST_LIB_VERSION;:?
ТЕД

6
Запуск цього коду виводить "Boost version: 0.199.60", тоді як версія TED виводила "Boost version: 1_48"
Homer6

5
Це не працює. Чому хтось би підтримав це? Хтось насправді запускав цей код і отримав корисний вихід? Я думаю, люди бачать "шестигранну" і вважають, що це має бути правильно.
JDiMatteo

1
Це неправильно. Версія Boost зберігається десятково, а не шестикутно.
Maciek D.

1
Тільки тепер це просто те ж саме, інша відповідь ...
EIS

13

Залежно від того, як ви встановили Boost та яку ОС ви працюєте, ви також можете спробувати наступне:

dpkg -s libboost-dev | grep 'Version'

Це libboost-devте саме, що і «підсилення»? Тому що у мене багато, /usr/include/boostале ваша команда дає is not installed.
Бен

7

Boost, встановлений на OS X за допомогою homebrew, має бажаний version.hppфайл у /usr/local/Cellar/boost/<version>/include/boost/version.hpp(зауважте, що версія вже згадується у шляху).

Я припускаю , що найшвидший спосіб визначити версію на будь-який UNIX-подібної системи буде шукати boostв /usr:

find /usr -name "boost"


4

Як на мене, ви можете спершу (знайти в ньому змінну версії. Якщо ви знаєте, де вона знаходиться (в 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"

3

Я затримався, щоб дізнатися номер підсилювальної версії в bash .

На завершення робиться наступне, що зберігає код версії в змінній, пригнічуючи помилки. Для цього використовується приклад maxschlepzig в коментарях до прийнятої відповіді. (Не можу коментувати, не маю 50 повторень)

Я знаю, що на це відповіли давно. Але я не міг ніде знайти, як це зробити в баш. Тому я подумав, що це може допомогти комусь із тією ж проблемою. Крім того, це повинно працювати незалежно від того, де встановлено прискорення, доки комлер може його знайти. І це дасть вам номер версії, який акутно використовується компілером, коли у вас встановлено кілька версій.

{
VERS=$(echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -s -x c++ -E - | grep "^[^#;]")
} &> /dev/null

Хороший підхід і подібне, що він використовує <boost / version.hpp>, а не явний шлях.
хешлок


0

Якщо один встановлений прискорення на macOS через Homebrew, ймовірно, ви побачите встановлену версію (-ів) підвищення з:

ls /usr/local/Cellar/boost*

-1

Ви вже можете відповісти, але ви можете спробувати цю просту програму, щоб визначити, чи є та яка установка прискорення у вас:

#include<boost/version.hpp>
#include<iostream>
using namespace std;
int main()
{
cout<<BOOST_VERSION<<endl;
return 0;
}

8
На це вже відповіли майже десять років тому, і ви можете це зрозуміти, просто прочитавши цю сторінку.
Гонки легкості на орбіті
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.