একটি সিস্টেমে বুস্ট সংস্করণ কীভাবে নির্ধারণ করবেন?


140

কোনও সিস্টেমে বুস্ট সি ++ লাইব্রেরির সংস্করণ নির্ধারণের জন্য কি কোনও দ্রুত উপায় আছে?

উত্তর:


97

76
যদি আপনি এটি ম্যানুয়ালি বের করতে চান (কোড-এর চেয়ে), অন্তর্ভুক্ত ডিরেক্টরিতে যান এবং সংস্করণ hpp খুলুন। BOOST_VERSIONকিছুটা ডিসিফেরিং লাগে তবে BOOST_LIB_VERSIONতা বেশ পরিষ্কার। আমার মান বর্তমানে"1_42"
টেড

4
লিনাক্সে, "ldd yourpogramname" ব্যবহার করা আপনাকে প্রায়শই দেখায় যে বুস্টের কোন সংস্করণ আপনার প্রোগ্রামের সাথে সংযুক্ত ছিল (যা শিরোনাম থেকে কোনও পার্থক্য নির্দেশ করার সম্ভাবনা রয়েছে যদিও এটি আলাদা হওয়ার সম্ভাবনা নেই)।
হোমার 6

10
লিনাক্সেও,dpkg -S /usr/include/boost/version.hpp
এফ্রেতো

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
কী উত্সর্গ স্যার @ ভার্টেক্সওয়াহন
বিশাল শর্মা

4
@ ভার্টেক্সওয়াহনের লাইন ভাঙতে: 1.60.0 এবং 1.61.0 এর সাথেও কাজ করে
m8mble

4
@ ভার্টেক্সওয়াহান তাদের যে কোনও ধরণের মুক্তির পরিবর্তনের জন্য আপনাকে নিয়োগ দেওয়া উচিত।
পাস্কালভি কেটেন

14
আপনি নিজের উত্তরটি কেন এমন কিছু দিয়ে আপডেট করবেন না: 'সমস্ত বুস্ট সংস্করণ (1.51 থেকে 1.63 পরীক্ষিত সংস্করণ) নিয়ে কাজ করে।' - মন্তব্য বিভাগটি উপচে পড়ার পরিবর্তে ...
ম্যাক্সচলেপজিগ

62

আপনার যদি কেবল নিজের তথ্যের জন্য জানা দরকার তবে কেবলমাত্র /usr/incolve/boost/version.hpp (উবুন্টু ১৩.১০) দেখুন এবং সরাসরি তথ্যটি পড়ুন


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
এই কোডটি চালানো "বুস্ট সংস্করণ: 0.199.60" আউটপুট করেছে যেখানে টিইডির সংস্করণটি "বুস্ট সংস্করণ: 1_48" আউটপুট করেছে
হোমার 6

5
এটি কাজ করে না। কেন কেউ এটিকে উপার্জন করবে? আসলেই কি কেউ এই কোডটি চালাচ্ছেন এবং দরকারী আউটপুট অর্জন করেছেন? আমি অনুমান করি যে লোকেরা "হেক্স" দেখেন এবং এটি সঠিক হওয়া উচিত।
জেডিম্যাটটিও

1
এটি সঠিক নয়। বুস্ট সংস্করণ দশমিকভাবে সংরক্ষণ করা হয়, ষড়ভুজ নয়।
ম্যাকিক ডি

1
এখন ব্যতীত এটি হিসাবে ঠিক একই জিনিস অন্য উত্তর ...
Eis

13

আপনি কীভাবে বুস্ট ইনস্টল করেছেন এবং কী ওএস আপনি চালাচ্ছেন তার উপর নির্ভর করে আপনি নিম্নলিখিতগুলিও ব্যবহার করতে পারেন:

dpkg -s libboost-dev | grep 'Version'

Is 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 ব্যাশ

নিম্নলিখিত কাজটি শেষ হয়েছে, যা ত্রুটিগুলি দমন করে, একটি পরিবর্তনশীলতে সংস্করণ কোড সঞ্চয় করে। এটি গৃহীত উত্তরের মন্তব্যে ম্যাক্সচেলেপজিগের উদাহরণ ব্যবহার করে। (মন্তব্য করতে পারবেন না, ৫০ টি প্রতিনিধি নেই)

আমি জানি এটির উত্তর অনেক আগেই দেওয়া হয়েছিল। তবে কোথাও কোথাও কীভাবে এটি করা যায় তা আমি খুঁজে পেলাম না। সুতরাং আমি ভেবেছিলাম এটি হয়ত একই সমস্যাযুক্ত কাউকে সহায়তা করবে। যতক্ষণ না কোমলারের সন্ধান করা যায় ততক্ষণ বুস্ট ইনস্টল করা আছে তার বিষয়টি বিবেচনা করা উচিত। এবং এটি আপনাকে সেই সংস্করণ নম্বর দেবে যা একযোগে কমলার দ্বারা ব্যবহৃত হয়, যখন আপনি একাধিক সংস্করণ ইনস্টল করেছেন।

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

দুর্দান্ত পদ্ধতির এবং এর মতো এটি সুস্পষ্ট পথের পরিবর্তে <boost / 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
এটা তোলে করেছে ইতিমধ্যে উত্তর দেওয়া, প্রায় এক দশক আগে, এবং আপনি স্পষ্টভাবে দেখতে পারেন কেবল এই পৃষ্ঠার পড়ার মাধ্যমে।
অরবিটে মার্চীনতা রেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.