มีวิธีที่รวดเร็วในการกำหนดเวอร์ชันของห้องสมุด Boost C ++ ในระบบหรือไม่?
มีวิธีที่รวดเร็วในการกำหนดเวอร์ชันของห้องสมุด Boost C ++ ในระบบหรือไม่?
คำตอบ:
dpkg -S /usr/include/boost/version.hpp
echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E -
- ตัวอย่างบน Fedora 26: 106300 (เช่น 1.63)
ทดสอบกับ 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
หากคุณต้องการทราบข้อมูลของคุณเองเพียงแค่ดูที่ /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;
?
ขึ้นอยู่กับวิธีที่คุณติดตั้งบูสต์และระบบปฏิบัติการที่คุณใช้คุณสามารถลองสิ่งต่อไปนี้ได้:
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 ตัวแปร 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"
ฉัน stugeled เพื่อหาหมายเลขรุ่นเพิ่มในทุบตีทุบตี
ลงเอยด้วยการทำสิ่งต่อไปนี้ซึ่งเก็บรหัสเวอร์ชั่นไว้ในตัวแปร นี่ใช้ตัวอย่างจาก 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
Ref: https://www.osetc.com/th/how-to-install-boost-on-ubuntu-16-04-18-04-linux.html
หากมีบูสต์เพิ่มหนึ่งตัวติดตั้งบน macOS ผ่าน Homebrew มีแนวโน้มที่จะเห็นเวอร์ชันบูสต์ที่ติดตั้งด้วย:
ls /usr/local/Cellar/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"