Не получается собрать

Пытаюсь собрать Manticore 3.5.2 (да и 3.5.1 тоже пробовал) на Ubuntu 20.04 и Arch Linux, но cmake пишет странные ошибки (одинаковые и в убунте, и в арче):

-- Could NOT find Boost: missing: context (found /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found suitable version "1.71.0", minimum required is "1.61.0"))
[...]
-- Could NOT find Boost: missing: system (found /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0"))
-- Checking for std::shared_ptr is usable ...
-- Performing Test HAVE_STD_SHARED_PTR__res_
-- Performing Test HAVE_STD_SHARED_PTR__res_ - Failed
-- Checking for std::tr1::shared_ptr ...
-- Performing Test HAVE_BOOST_SHARED_PTR_HPP__res_
-- Performing Test HAVE_BOOST_SHARED_PTR_HPP__res_ - Failed
-- Looking for C++ include boost/shared_ptr.hpp
-- Looking for C++ include boost/shared_ptr.hpp - not found
CMake Error at /home/andreymal/tmp/cache/galera-cmake-3.x-5.7-src/CMakeLists.txt:171 (message):
  No shared ptr available

Но Boost естественно установлен, и все требуемые либы стоят (копировал apt-get install из документации), все нужные исходники в /usr/include/boost лежат.

Что не так?

может выставить BOOST ROOT переменную окружения - которая будет указывать в boost?

какая версия cmake у вас? бывает что ставится из пакета старая версия cmake и она не находит нуэный буст - попробуйте собрать \ поставить самый свежий cmake

Попробовал с разными комбинациями BOOST_ROOT, BOOST_INCLUDEDIR, BOOST_LIBRARYDIR — ничего не изменилось.

Но спасибо за наводку: погуглив в этом направлении, я обнаружил, что:

  • с опцией -DBoost_NO_BOOST_CMAKE=ON cmake успешно отрабатывает;

  • если запустить cmake с переменной окружения CXXFLAGS="-Wno-error=deprecated-copy", то после этого Manticore успешно собирается в убунте;

  • а с CXXFLAGS="-Wno-error=deprecated-copy -Wno-error=stringop-truncation" почти собирается в арче, но на 89% сборки начинает писать какие-то странные ошибки про secondaryindex.cpp.

В принципе можно считать, что цель достигнута и Manticore в убунте успешно собран (с арчем я потом ещё поиграюсь), правда, остаётся интересно, почему без опции Boost_NO_BOOST_CMAKE собираться не хочет

попробуйте собрать \ поставить самый свежий cmake

В убунте 3.16.3, в арче 3.18.3, вроде свежее особо и некуда

там есть такая проблема что cmake не видит буст новее чем тот когда был собран cmake

Ну те например cmake 3.16 может найти только буст до 164 но все более свежие версии не найдёт

Помогает если сам cmake собрать из самых свежих сорцов и инсталлировать в систему

Снёс в убунте буст 1.72, поставил 1.67 — хоть и не 1.64, но таки собирается, спасибо за инфу

В исходниках есть папочка dist, а в ней build_dockers под все актуальные системы.
В целом - начиная с bionic можно собирать с бустом, который есть в репозитории.
Но мы, ради унификации, собираем буст сами, и в докерфайлах это отражено.