cmake FindBoost не находит библиотеки Boost при сборке с MinGW в Windows - PullRequest
0 голосов
/ 27 декабря 2018

qtcreator поддерживает как qmake, так и cmake для кроссплатформенной разработки, а qmake отлично работает как для msvc, так и для MinGW сборок на Windows.Однако я бы предпочел поддерживать только один инструмент: cmake.

CMakeLists.txt at via-httplib отлично работает на linux и при использовании cmake для сборкиmsvc по Windows.Однако при использовании cmake для сборки MinGW на Windows я получаю следующую ошибку:

Ошибка CMake в C: / Program Files / CMake / share / cmake-3.13 / Modules/FindBoost.cmake:2100 (message):
Невозможно найти запрошенные библиотеки Boost.

Версия Boost: 1.69.0

Путь включения Boost: D: / DevLibraries / boost /boost_1_69_0

Не удалось найти следующие библиотеки Boost:

      boost_system

Библиотеки Boost не найдены.Возможно, вам потребуется установить BOOST_LIBRARYDIR в каталог, содержащий библиотеки Boost, или BOOST_ROOT в каталог Boost.

Обе переменные среды BOOST_LIBRARYDIR и BOOST_ROOT установлены и обнаруживаются при использовании Visual Studio 15 2017 Win64 генератор и стандартные компиляторы по умолчанию

Сообщение об ошибке указывает, что при использовании MinGW Makefiles и собственных компиляторов по умолчанию cmake находит переменную среды BOOST_ROOT, но не BOOST_LIBRARYDIR.Таким образом, похоже, что проблема не описана здесь: Cmake не находит Boost

Это ошибка в FindBoost.cmake?Есть ли «обходной путь»?

1 Ответ

0 голосов
/ 29 декабря 2018

Это проблема с _boost_ARCHITECTURE_TAG в FindBoost.cmake, описанная в строке 1518.
Тег был добавлен для обработки Boost 1.66.0 и более поздних версий.

Это не настройка_boost_ARCHITECTURE_TAG для MinGW до -x64, поэтому он ищет имена библиотек надстроек, например:

libboost_system-mgw73-mt-d-1_69.a

вместо:

libboost_system-mgw73-mt-d-x64-1_69.a

Существует обходной путь: установитеcmake переменная: Boost_ARCHITECTURE до -x64.

Примечание: установка Boost_ARCHITECTURE в качестве переменной среды не работает, так как FindBoost.cmake не считывает Boost_ARCHITECTURE в качестве переменной среды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...