Я хотел бы предложить, чтобы вы использовали подпрограммы find_package
CMake вместе с флагом required
и явно указывали нужные вам компоненты. Тогда нет необходимости вручную устанавливать библиотеки.
Для вашего проекта
FIND_PACKAGE(Boost 1.41 COMPONENTS filesystem system REQUIRED)
MESSAGE(STATUS "** Boost Include: ${Boost_INCLUDE_DIR}")
MESSAGE(STATUS "** Boost Libraries: ${Boost_LIBRARIES}")
вместе с
TARGET_LINK_LIBRARIES(your_project ${Boost_LIBRARIES})
должен сделать свое дело. Указание версии (здесь 1.41) делает CMake, если доступна только более старая версия boost. Указание компонентов (компоненты = библиотеки повышения, которые не только для заголовков) заставляет CMake жаловаться, если они недоступны, а также автоматически добавляет их в переменную Boost_LIBRARIES. Заявления в сообщении не обязательны, но мне нравится иметь обратную связь ...
В случае, если вы хотите вручную загрузить и установить новейшую версию boost (что я обычно делаю, поскольку дистрибутивы Linux имеют тенденцию быть несколько медленными в отношении пакетной надстройки) вместе с версией, предоставленной системой, вы можете намекнуть на: Скрипты find_package для перехода в пользовательское местоположение через
SET(BOOST_ROOT "$ENV{HOME}/usr")
который, конечно, идет перед вызовом find_package
(в этом примере boost был бы установлен в префикс $ HOME / usr).
Последнее замечание - у меня иногда возникали проблемы со старыми версиями скрипта FindBoost.cmake
(особенно со старыми CMake 2.6), который совершает всю магию при вызове find_package(Boost)
. Это не должно быть проблемой для Boost 1.41, но если возникают проблемы с поиском (более новых версий) Boost, даже если вы абсолютно уверены, что он установлен правильно, вы можете попробовать более свежую версию FindBoost.cmake
. Например, из gitweb он должен быть в дереве Modules
.