सिस्टम पर बूस्ट संस्करण का निर्धारण कैसे करें?


140

क्या सिस्टम पर Boost C ++ पुस्तकालयों के संस्करण को निर्धारित करने का एक त्वरित तरीका है?

जवाबों:


97

सूचनात्मक मैक्रो को बढ़ावा देना । आप की जरूरत है:BOOST_VERSION


76
यदि आप इसे (कोड के बजाय) मैन्युअल रूप से पता लगाना चाहते हैं, तो शामिल निर्देशिका पर जाएं, और version.hpp खोलें। BOOST_VERSIONथोड़ा सा गूंथ लेता है, लेकिन BOOST_LIB_VERSIONबहुत स्पष्ट है। मेरा मूल्य वर्तमान में है"1_42"
TED

4
लिनक्स में, "ldd yourprogramname" का उपयोग करना अक्सर आपको दिखाएगा कि आपके प्रोग्राम से किस संस्करण का बढ़ावा जुड़ा हुआ था (जिसमें हेडर से अंतर को इंगित करने की संभावना है, हालांकि यह अलग होने की संभावना नहीं है)।
होमर 6

10
इसके अलावा linux में,dpkg -S /usr/include/boost/version.hpp
Efreeto

8
आप उदाहरण के माध्यम से वर्तमान मूल्य को जल्दी से देख सकते हैं echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E -- उदाहरण के लिए फेडोरा 26 पर: 106300 (अर्थात 1.63)
अधिकतम

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;

आउटपुट: बूस्ट 1.51.0 का उपयोग करना

बूस्ट संस्करण 1.51.0 से 1.65.0 तक परीक्षण किया गया


5
क्या एक समर्पण है सर @Vertexwahn
विशाल शर्मा

4
@Vertexwahn की लकीर तोड़ने के लिए: 1.60.0 और 1.61.0 के साथ भी काम करता है ।
m8mble

4
@Vertexwahn उन्हें किसी भी प्रकार के रिलीज़ परिवर्तन के लिए आपको नियुक्त करना चाहिए।
पास्कलवूटन

14
आप अपने उत्तर को केवल कुछ के साथ अपडेट क्यों नहीं करते हैं: 'सभी बूस्ट संस्करणों के साथ काम करता है (परीक्षण संस्करण 1.51 से 1.63 तक)।' - टिप्पणी अनुभाग को ओवरफ्लो करने के बजाय ...
अधिकतम

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
इस कोड को "बूस्ट संस्करण: 0.199.60" आउटपुट किया गया, जबकि टेड के संस्करण ने "बूस्ट संस्करण: 1_48" का उत्पादन किया
होमर 6

5
यह काम नहीं करता है। कोई भी इसे क्यों बढ़ाएगा? क्या किसी ने वास्तव में इस कोड को चलाया है और उपयोगी आउटपुट प्राप्त किया है? मुझे लगता है कि लोग "हेक्स" देखते हैं और यह सही होना चाहिए।
JDiMatteo

1
यह सही नहीं है। बूस्ट संस्करण को दशमलव में संग्रहीत किया जाता है, षट्कोणीय रूप से नहीं।
मैकिएक डी।

1
अब सिवाय इसके कि इसे के रूप में सिर्फ एक ही बात है अन्य जवाब ...
EIS

13

इस बात पर निर्भर करता है कि आपने कैसे बढ़ावा दिया है और आप किस ओएस पर चल रहे हैं, आप निम्नलिखित की कोशिश कर सकते हैं:

dpkg -s libboost-dev | grep 'Version'

है libboost-dev"बढ़ावा" के रूप में ही? क्योंकि मेरे पास बहुत कुछ है /usr/include/boostलेकिन आपकी आज्ञा देता है is not installed
बेन

7

होमब्रेव का उपयोग करके ओएस एक्स पर स्थापित बूस्ट में वांछित version.hppफ़ाइल है /usr/local/Cellar/boost/<version>/include/boost/version.hpp(ध्यान दें, कि संस्करण पहले से ही पथ में उल्लिखित है)।

मैं किसी भी यूनिक्स की तरह सिस्टम पर संस्करण का निर्धारण करने के लिए के लिए खोज करने के लिए किया जाएगा सबसे तेज़ तरीका लगता है boostमें /usr:

find /usr -name "boost"


4

मेरे अनुसार, आप सबसे पहले (version.hpp को ढूँढ सकते हैं। संस्करण चर इसमें है, यदि आप जानते हैं कि यह कहाँ है (उबंटू में यह आमतौर पर /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 बैश

निम्नलिखित कर रहा है, जो एक चर में संस्करण कोड संग्रहीत करता है, त्रुटियों को दबाता है। यह स्वीकृत उत्तर की टिप्पणियों में मैक्सस्क्लेज़िग से उदाहरण का उपयोग करता है। (टिप्पणी नहीं कर सकते, 50 प्रतिनिधि नहीं है)

मुझे पता है कि यह बहुत समय पहले उत्तर दिया गया है। लेकिन मुझे यह नहीं लगा कि मैं इसे कैसे भी कर सकता हूं। इसलिए मैंने सोचा कि इससे किसी को भी समस्या हो सकती है। इसके अलावा यह काम नहीं करना चाहिए जहां बूस्ट स्थापित किया गया है, जब तक कि कॉमरेड इसे पा सकता है। और यह आपको वर्जन नंबर देगा जो कि कॉमिकलर द्वारा एक्यूट रूप से उपयोग किया जाता है, जब आपके पास कई वर्जन इंस्टॉल होते हैं।

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

अच्छा तरीका और जैसा कि यह स्पष्ट पथ के बजाय <बढ़ावा / version.hpp> का उपयोग करता है।
हैशलॉक


0

यदि होमबॉव के माध्यम से मैकओएस पर एक इंस्टॉल्ड बूस्ट स्थापित होता है, तो एक को इंस्टॉल किए गए बूस्ट वर्जन (एस) के साथ देखने की संभावना है:

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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.