Boost + CMake:没有合适的版本

时间:2019-03-18 09:05:37

标签: c++ boost cmake sparc

我正在尝试在涉及到的项目的嵌入式SPARC式计算机上部署一些库。我在此计算机上成功构建了最新的Boost库,并将其安装到/ util目录中。然后,我尝试为CMake编写简单的测试器脚本。这是此脚本的开头:

cmake_minimum_required(VERSION 2.8.3)
project(cpp_boost_test)
find_package(Boost REQUIRED COMPONENTS system thread)
find_package(console_bridge REQUIRED)
message(STATUS "Boost Includes: ${Boost_INCLUDE_DIRS}")
message(STATUS "Boost Libraries: ${Boost_LIBRARIES}")

在运行时,我收到以下错误消息:

-- Found Boost 1.70.0 at /util/lib/cmake/Boost-1.70.0
-- Requested configuration: QUIET REQUIRED COMPONENTS
     system;thread
-- Found boost_headers 1.70.0 at /util/lib/cmake/boost_headers-1.70.0
-- Found boost_system 1.70.0 at /util/lib/cmake/boost_system-1.70.0
-- No suitable boost_system variant has been identified!
--   libboost_system.so.1.70.0 (shared, BUILD_SHARED_LIBS not ON, set Boost_USE_STATIC_LIBS=OFF to override)
CMake Error at /util/lib/cmake/Boost-1.70.0/BoostConfig.cmake:60 (find_package):
      Found package configuration file:

      /util/lib/cmake/boost_system-1.70.0/boost_system-config.cmake

      but it set boost_system_FOUND to FALSE so package "boost_system" is considered to be NOT FOUND.
      Reason given by package:
      No suitable build variant has been found.
Call Stack (most recent call first):
   /util/lib/cmake/Boost-1.70.0/BoostConfig.cmake:89 (boost_find_dependency)
   /util/share/cmake-3.7/Modules/FindBoost.cmake:229 (find_package)
 CMakeLists.txt:4 (find_package)

我尝试设置Boost_USE_STATIC_LIBS选项,但错误仍然存​​在。

这是否可能与Boost.System中的版本冲突?我应该怎么做才能避免这个错误?无法从项目中删除Boost,因此我无法接受有关此类删除的答案...

2 个答案:

答案 0 :(得分:0)

我研究了Boost更改的历史,因此答案是,应该将链接Boost的项目中的构建依赖项手动包含到CMake中(有关详细信息,请参见此处的答案:CMake finds Boost but the imported targets not available for Boost version)。因此,必须使用比您使用的CMake版本稍旧的Boost版本。我通过回滚到Boost 1.61解决了我的问题(根据我的嵌入式平台的特殊性,我无法编译3.7.0以上的CMake版本)。

答案 1 :(得分:0)

使用cmake --version检查当前cmake安装的版本。

很有可能大于3.0。由于旧cmake与现代cmake(> 3.0)之间不兼容,因此您可以尝试通过将VERSION更改为当前cmake的版本或任何大于等于3.0的数字来对其进行修复。