有没有一种快速确定系统上Boost C++库版本的方法?
#include <boost/version.hpp>
std::cout << "Using Boost "
<< BOOST_VERSION / 100000 << "." // major version
<< BOOST_VERSION / 100 % 1000 << "." // minor version
<< BOOST_VERSION % 100 // patch level
<< std::endl;
#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;
呢? - T.E.D.根据您安装boost的方式和所运行的操作系统,您也可以尝试以下方法:
dpkg -s libboost-dev | grep 'Version'
libboost-dev
和"boost"是一样的吗?因为我在/usr/include/boost
中有很多文件,但是您的命令提示说它们未安装。 - bomben使用homebrew在OS X上安装的Boost,在/usr/local/Cellar/boost/<version>/include/boost/version.hpp
中有所需的version.hpp
文件(请注意,版本已经在路径中提到)。
我想在任何类UNIX系统上确定版本的最快方法是在/usr
中搜索boost
:
find /usr -name "boost"
对我来说,你首先可以找到 version.hpp 文件,版本变量就在其中。如果你知道它的位置(在 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.
就我而言,我在我的系统中安装了两个版本的boost。输出如下:
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编写的@Vertexwahns答案,适合懒人:
boost_version=$(cat /usr/include/boost/version.hpp | grep define | grep "BOOST_VERSION " | cut -d' ' -f3)
echo "installed boost version: $(echo "$boost_version / 100000" | bc).$(echo "$boost_version / 100 % 1000" | bc).$(echo "$boost_version % 100 " | bc)"
显示当前安装的boost版本为:1.71.0
{
VERS=$(echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -s -x c++ -E - | grep "^[^#;]")
} &> /dev/null
另一种获取当前boost版本(Linux Ubuntu)的方法:
~$ dpkg -s libboost-dev | grep Version
Version: 1.58.0.1ubuntu1
Ref: https://www.osetc.com/en/how-to-install-boost-on-ubuntu-16-04-18-04-linux.html
BOOST_VERSION
需要一些解析,但BOOST_LIB_VERSION
相对清晰。我的值目前是"1_42"。 - T.E.D.dpkg -S /usr/include/boost/version.hpp
的意思是查找安装了哪个软件包提供了/usr/include/boost/version.hpp
文件。 - Efreetoecho -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E -
快速查看当前值,例如在 Fedora 26 上的值为 106300(即 1.63)。请注意,本翻译尽力使内容易懂,但未改变原意。 - maxschlepzig