Boost + CMake: нет подходящего варианта сборки - PullRequest
1 голос
/ 18 марта 2019

Я пытаюсь развернуть несколько библиотек на встроенной SPARC-подобной машине для проекта, в котором я участвовал. Я успешно создал библиотеку Boost-edge 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 из проекта, поэтому я не могу принять ответ о таком удалении ...

1 Ответ

1 голос
/ 27 марта 2019

Я изучил историю изменений в Boost, поэтому ответ таков: создание зависимостей в проектах, связывающих Boost, должно быть вручную включено в CMake (см. Ответы здесь: CMake находит Boost, но импортированные цели недоступны для версии Boost для деталей).Таким образом, обязательно использовать версию Boost, которая немного старше используемой вами версии CMake.Я решил проблему с откатом до Boost 1.61 (из-за особенностей моей встроенной платформы не могу скомпилировать версию CMake выше 3.7.0).

...