답변:
정보 용 매크로 향상 . 당신이 필요합니다 :BOOST_VERSION
dpkg -S /usr/include/boost/version.hpp
echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E -
(예 : 1.63) 106300 : 페도라 26 일 - 예를 들어
부스트 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으로 테스트
#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;
?
나에 관해서는, 먼저 (버전 변수가 어디에 있는지 알면 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"
bash 에서 부스트 버전 번호를 찾기 위해 기절했습니다. .
버전 코드를 변수에 저장하여 오류를 억제하는 다음을 수행했습니다. 이것은 허용 된 답변의 의견에 maxschlepzig의 예제를 사용합니다. (댓글을 달 수 없음, 담당자 50 명 없음)
나는 이것이 오래 전에 답변되었다는 것을 알고 있습니다. 그러나 나는 어디에서나 bash에서 어떻게 할 수 없었습니다. 그래서 이것이 같은 문제를 가진 사람에게 도움이 될 것이라고 생각했습니다. 또한 이것은 컴파일러가 찾을 수있는 한 부스트가 설치된 위치에 관계없이 작동해야합니다. 그리고 여러 버전이 설치된 경우 컴파일러에서 사용하는 버전 번호를 제공합니다.
{
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
참조 : https://www.osetc.com/en/how-to-install-boost-on-ubuntu-16-04-18-04-linux.html
이미 답변을 받았을 수도 있지만이 간단한 프로그램을 사용하여 부스트 설치 여부와 설치 여부를 결정할 수 있습니다.
#include<boost/version.hpp>
#include<iostream>
using namespace std;
int main()
{
cout<<BOOST_VERSION<<endl;
return 0;
}
BOOST_VERSION
약간의 해독이 필요하지만BOOST_LIB_VERSION
꽤 분명합니다. 내 가치는 현재"1_42"