Có cách nào nhanh chóng để xác định phiên bản của thư viện Boost C ++ trên hệ thống không?
Có cách nào nhanh chóng để xác định phiên bản của thư viện Boost C ++ trên hệ thống không?
Câu trả lời:
Tăng cường macro thông tin . Bạn cần:BOOST_VERSION
dpkg -S /usr/include/boost/version.hpp
echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E -
- ví dụ: trên Fedora 26: 106300 (tức là 1,63)
Đã thử nghiệm với 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;
Đầu ra: Sử dụng Boost 1.51.0
Đã thử nghiệm với các phiên bản boost 1.51.0 đến 1.65.0
Nếu bạn chỉ cần biết thông tin của riêng mình, chỉ cần tìm trong /usr/include/boost/version.hpp (Ubuntu 13.10) và đọc thông tin trực tiếp
#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;
}
Cập nhật: câu trả lời đã được sửa.
std::cout << "Boost version: " << BOOST_LIB_VERSION;
?
Tùy thuộc vào cách bạn đã cài đặt boost và hệ điều hành nào bạn đang chạy, bạn cũng có thể thử các cách sau:
dpkg -s libboost-dev | grep 'Version'
libboost-dev
giống như "tăng" không? Bởi vì tôi có rất nhiều /usr/include/boost
nhưng lệnh của bạn đưa ra is not installed
.
Boost được cài đặt trên OS X bằng homebrew có version.hpp
tệp mong muốn /usr/local/Cellar/boost/<version>/include/boost/version.hpp
(lưu ý rằng phiên bản đã được đề cập trong đường dẫn).
Tôi đoán cách nhanh nhất để xác định phiên bản trên bất kỳ hệ thống nào giống UNIX sẽ là tìm kiếm boost
trong /usr
:
find /usr -name "boost"
Đối với tôi, trước tiên bạn có thể (tìm phiên bản. Hãy biến biến phiên bản nằm trong đó, nếu bạn biết nó ở đâu (trong ubfox nó thường được /usr/include/boost/version.hpp
cài đặt theo mặc định)):
locate `boost/version.hpp`
Chương trình thứ hai là phiên bản của:
grep BOOST_LIB_VERSION /usr/include/boost/version.hpp
hoặc là
grep BOOST_VERSION /usr/include/boost/version.hpp.
Đối với tôi, tôi có hai phiên bản boost được cài đặt trong hệ thống của mình. Đầu ra như sau:
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"
Hiển thị phiên bản cài đặt cục bộ:
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"
Tôi cố gắng tìm ra số phiên bản boost trong bash .
Đã kết thúc việc làm sau, trong đó lưu mã phiên bản trong một biến, khắc phục các lỗi. Điều này sử dụng ví dụ từ maxschlepzig trong các ý kiến của câu trả lời được chấp nhận. (Không thể nhận xét, không có 50 Đại diện)
Tôi biết điều này đã được trả lời từ lâu. Nhưng tôi không thể tìm thấy làm thế nào để làm điều đó trong bash bất cứ nơi nào. Vì vậy, tôi nghĩ rằng điều này có thể giúp một người có cùng vấn đề. Ngoài ra, điều này sẽ hoạt động cho dù cài đặt boost ở đâu, miễn là trình comiler có thể tìm thấy nó. Và nó sẽ cung cấp cho bạn số phiên bản được sử dụng bởi comiler, khi bạn cài đặt nhiều phiên bản.
{
VERS=$(echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -s -x c++ -E - | grep "^[^#;]")
} &> /dev/null
Một cách khác để có phiên bản tăng cường hiện tại (Linux Ubuntu):
~$ dpkg -s libboost-dev | grep Version
Version: 1.58.0.1ubuntu1
Tham chiếu: https://www.osetc.com/en/how-to-install-boost-on-ubfox-16-04-18-04-linux.html
Có thể đã được trả lời, nhưng bạn có thể thử chương trình đơn giản này để xác định xem bạn có cài đặt boost nào không:
#include<boost/version.hpp>
#include<iostream>
using namespace std;
int main()
{
cout<<BOOST_VERSION<<endl;
return 0;
}
BOOST_VERSION
mất một chút giải mã, nhưngBOOST_LIB_VERSION
là khá rõ ràng. Giá trị của tôi hiện tại"1_42"