【发布时间】:2019-03-18 09:05:36
【问题描述】:
我正在尝试为我参与的项目在嵌入式类似 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,因此我无法接受有关此类删除的答案...
【问题讨论】:
-
问题似乎是你的 CMake 太旧了(我从路径中猜到 3.7)。 Boost 1.70.0 是最前沿的,CMake 在其 FindBoost.cmake 模块中并不知道它。支持 Boost 1.70 的第一个 CMake 版本是几天前发布的 3.14。
-
我在构建 ARM 时遇到了同样的问题。即使使用 cmake 3.14.0 我也有同样的问题。设置“SET(Boost_DEBUG ON)”时,您可以更详细地查看发生的情况。它无法找到共享库或静态库。设置 SET(BUILD_SHARED_LIBS ON) 时,它确实成功地制作了 makefile,但出现了更多问题。 (例如,它仍然无法设置 Boost_SYSTEM_LIBRARY)。似乎与 cmake 不兼容的问题和最新的提升确实