Bagaimana cara menentukan versi Boost pada sistem?

142

Apakah ada cara cepat untuk menentukan versi pustaka Boost C ++ pada sistem?

Jan Deinhard
sumber

Jawaban:

97

Tingkatkan Makro Informasi . Anda membutuhkan:BOOST_VERSION

AraK
sumber
77
Jika Anda ingin mengetahuinya secara manual (bukan dalam kode), buka direktori include, dan buka version.hpp. BOOST_VERSIONmembutuhkan sedikit penguraian, tetapi BOOST_LIB_VERSIONcukup jelas. Nilai tambang saat ini"1_42"
TED
4
Di linux, menggunakan "ldd yourprogramname" akan sering menunjukkan versi penguat mana yang ditautkan ke program Anda (yang memiliki kemungkinan menunjukkan perbedaan dari tajuk, meskipun tidak mungkin berbeda).
Homer6
10
Juga di linux,dpkg -S /usr/include/boost/version.hpp
Efreeto
8
Anda dapat dengan cepat mencari nilai saat ini melalui misalnya echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E -- misalnya di Fedora 26: 106300 (yaitu 1,63)
maxschlepzig
69

Diuji dengan boost 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;

Output: Menggunakan Boost 1.51.0

Diuji dengan peningkatan versi 1.51.0 hingga 1.65.0

Vertexwahn
sumber
5
apa dedikasi pak @Vertexwahn
Vishal Sharma
4
Untuk memecahkan rekor @Vertexwahn: Bekerja juga dengan 1.60.0 dan 1.61.0 .
m8mble
4
@Vertexwahn Mereka harus mempekerjakan Anda untuk segala jenis perubahan rilis.
PascalVKooten
14
Mengapa Anda tidak memperbarui jawaban Anda dengan sesuatu seperti: 'Bekerja dengan semua versi Boost (versi yang diuji 1.51 hingga 1.63).' -
Daripada
62

Jika Anda hanya perlu mengetahui informasi Anda sendiri, cukup lihat di /usr/include/boost/version.hpp (Ubuntu 13.10) dan baca informasinya secara langsung

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

Pembaruan: jawabannya telah diperbaiki.

hkaiser
sumber
24
Mengapa tidak hanya std::cout << "Boost version: " << BOOST_LIB_VERSION;:?
TED
6
Menjalankan kode ini menghasilkan "Boost version: 0.199.60" sedangkan versi TED mengeluarkan "Boost version: 1_48"
Homer6
5
Ini tidak berhasil. Mengapa ada yang suka ini? Adakah yang benar-benar menjalankan kode ini dan mendapatkan hasil yang berguna? Saya kira orang melihat "hex" dan mengira itu pasti benar.
JDiMatteo
1
Ini tidak benar. Versi peningkatan disimpan secara desimal, bukan secara heksagonal.
Maciek D.
1
Kecuali sekarang ini sama saja dengan jawaban yang lain ...
eis
15

Bergantung pada bagaimana Anda menginstal boost dan OS apa yang Anda jalankan, Anda juga dapat mencoba yang berikut ini:

dpkg -s libboost-dev | grep 'Version'
SORE
sumber
Apakah libboost-devsama dengan "boost"? Karena saya memiliki banyak hal /usr/include/boosttetapi perintah Anda memberi is not installed.
Ben
7

Boost diinstal pada OS X menggunakan homebrew version.hppfile yang diinginkan di /usr/local/Cellar/boost/<version>/include/boost/version.hpp(perhatikan, bahwa versinya sudah disebutkan di jalur).

Saya kira cara tercepat untuk menentukan versi pada sistem mirip UNIX adalah dengan mencari boostdi /usr:

find /usr -name "boost"

Kamil S Jaron
sumber
4

Bagi saya, Anda bisa terlebih dahulu (temukan version.hpp variabel versi di dalamnya, jika Anda tahu di mana itu (di ubuntu biasanya di /usr/include/boost/version.hppinstal secara default)):

 locate `boost/version.hpp`

Kedua menunjukkan versinya oleh:

 grep BOOST_LIB_VERSION /usr/include/boost/version.hpp

atau

  grep BOOST_VERSION /usr/include/boost/version.hpp.

Bagi saya, saya memiliki dua peningkatan versi yang diinstal di sistem saya. Output seperti di bawah ini:

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"

Tampilkan versi lokal yang diinstal:

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"
Jayhello
sumber
3

Saya stugeled untuk mengetahui nomor versi peningkatan di bash .

Akhirnya melakukan mengikuti, yang menyimpan kode versi dalam variabel, menekan kesalahan. Ini menggunakan contoh dari maxschlepzig di komentar jawaban yang diterima. (Tidak dapat berkomentar, tidak memiliki 50 Rep)

Saya tahu ini sudah lama dijawab. Tetapi saya tidak dapat menemukan cara melakukannya dalam pesta di mana pun. Jadi saya pikir ini mungkin membantu seseorang dengan masalah yang sama. Ini juga harus bekerja di mana pun boost dipasang, selama comiler dapat menemukannya. Dan itu akan memberi Anda nomor versi yang secara aktual digunakan oleh comiler, ketika Anda menginstal beberapa versi.

{
VERS=$(echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -s -x c++ -E - | grep "^[^#;]")
} &> /dev/null
JulianW
sumber
Pendekatan yang bagus dan seperti itu menggunakan <boost / version.hpp> daripada jalur eksplisit.
hashlock
1

Jika ada satu peningkatan yang diinstal pada macOS melalui Homebrew, seseorang kemungkinan akan melihat versi peningkatan yang diinstal dengan:

ls /usr/local/Cellar/boost*
jakob.j
sumber
1

@Vertexwahns menjawab, tetapi ditulis dalam bash. Untuk orang yang malas:

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)"

Beri aku installed boost version: 1.71.0

Pengguna12547645
sumber
-1

Mungkin sudah terjawab, tetapi Anda dapat mencoba program sederhana ini untuk menentukan apakah dan instalasi boost apa yang Anda miliki:

#include<boost/version.hpp>
#include<iostream>
using namespace std;
int main()
{
cout<<BOOST_VERSION<<endl;
return 0;
}
Haresh Karnan
sumber
9
Ini telah sudah dijawab, hampir satu dekade lalu, dan Anda jelas dapat melihat bahwa hanya dengan membaca halaman ini.
Balapan Ringan di Orbit