จะตรวจสอบเวอร์ชั่นของ Boost ในระบบได้อย่างไร?


140

มีวิธีที่รวดเร็วในการกำหนดเวอร์ชันของห้องสมุด Boost C ++ ในระบบหรือไม่?

คำตอบ:


97

เพิ่มข้อมูลแมโคร คุณต้องการ:BOOST_VERSION


76
หากคุณต้องการคิดออกด้วยตนเอง (แทนที่จะเป็นในรหัส) ไปที่ไดเรกทอรี include และเปิด version.hpp BOOST_VERSIONใช้เวลาในการถอดรหัสเล็กน้อย แต่BOOST_LIB_VERSIONค่อนข้างชัดเจน มูลค่าของฉันอยู่ในขณะนี้"1_42"
TED

4
ใน linux การใช้ "ldd yourprogramname" มักจะแสดงให้คุณเห็นว่าบูสต์รุ่นที่เชื่อมโยงกับโปรแกรมของคุณ (ซึ่งมีความเป็นไปได้ที่จะระบุความแตกต่างจากส่วนหัวแม้ว่ามันจะไม่แตกต่างกัน)
Homer6

10
นอกจากนี้ใน linuxdpkg -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

ทดสอบกับ 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;

ผลลัพธ์: การใช้ Boost 1.51.0

ทดสอบกับบูสต์รุ่น 1.51.0 ถึง 1.65.0


5
ช่างผู้อุทิศตนเป็นใคร @Vertexwahn
Vishal Sharma

4
ที่จะทำลายแนว @Vertexwahn 's: ธิการยังมี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;?
TED

6
การเรียกใช้รหัสนี้ให้เอาต์พุต "Boost version: 0.199.60" ในขณะที่ TED ออกเวอร์ชั่น "Boost version: 1_48"
Homer6

5
มันใช้งานไม่ได้ ทำไมคนใดคนหนึ่งลงคะแนนในเรื่องนี้? มีใครบ้างที่ใช้งานโค้ดนี้และได้ผลลัพธ์ที่มีประโยชน์ ฉันเดาว่าผู้คนเห็น "hex" และคิดว่ามันต้องถูกต้อง
JDiMatteo

1
สิ่งนี้ไม่ถูกต้อง รุ่น Boost จะถูกเก็บไว้แบบ decimally ไม่ใช่แบบหกเหลี่ยม
Maciek D.

1
ยกเว้นตอนนี้มันเป็นเพียงสิ่งเดียวกับคำตอบอื่น ๆ ...
EIS

13

ขึ้นอยู่กับวิธีที่คุณติดตั้งบูสต์และระบบปฏิบัติการที่คุณใช้คุณสามารถลองสิ่งต่อไปนี้ได้:

dpkg -s libboost-dev | grep 'Version'

เป็น libboost-devเช่นเดียวกับ "เพิ่ม"? เพราะฉันมีจำนวนมากในแต่คำสั่งของคุณจะช่วยให้/usr/include/boost is not installed
Ben

7

Boost ติดตั้งบน OS X โดยใช้ homebrew มีversion.hppไฟล์ที่ต้องการ/usr/local/Cellar/boost/<version>/include/boost/version.hpp (โปรดทราบว่าเวอร์ชันดังกล่าวได้ถูกกล่าวถึงในเส้นทางแล้ว)

ฉันเดาวิธีที่เร็วที่สุดในการกำหนดเวอร์ชันในระบบที่คล้ายกับ UNIX คือการค้นหาboostใน/usr:

find /usr -name "boost"


4

สำหรับฉันคุณสามารถก่อน (หา version.hpp ตัวแปร version อยู่ในนั้นถ้าคุณรู้ว่ามันอยู่ที่ไหน (ใน 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

ฉัน stugeled เพื่อหาหมายเลขรุ่นเพิ่มในทุบตีทุบตี

ลงเอยด้วยการทำสิ่งต่อไปนี้ซึ่งเก็บรหัสเวอร์ชั่นไว้ในตัวแปร นี่ใช้ตัวอย่างจาก maxschlepzig ในความคิดเห็นของคำตอบที่ยอมรับ (ไม่สามารถแสดงความคิดเห็นไม่ได้มี 50 ตัวแทน)

ฉันรู้ว่าสิ่งนี้ได้รับคำตอบมานานแล้ว แต่ฉันไม่สามารถหาวิธีที่จะทำได้ในที่ใดก็ได้ ดังนั้นฉันคิดว่านี่อาจช่วยคนที่มีปัญหาเดียวกัน นอกจากนี้สิ่งนี้จะทำงานได้ไม่ว่าจะติดตั้งบูสต์ไว้นานแค่ไหนตราบใดที่คอมไพเลอร์สามารถค้นหาได้ และมันจะให้หมายเลขเวอร์ชั่นที่คอมไพเลอร์ใช้โดยอัตโนมัติเมื่อคุณติดตั้งหลายเวอร์ชัน

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

วิธีการที่ดีและชอบการใช้ <boost / version.hpp> แทนที่จะเป็นเส้นทางที่ชัดเจน
hashlock


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
มันได้รับการตอบแล้วเกือบทศวรรษที่ผ่านมาและคุณสามารถดูชัดถ้อยชัดคำว่าเพียงแค่อ่านหน้านี้
การแข่งขัน Lightness ใน Orbit
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.