Spec-Zone.ru › CMake 3.30

FindBoost

Изменено в версии 3.30: Этот модуль доступен только в том случае, если политика CMP0167 не установлена в NEW. Проекты, использующие этот модуль, необходимо перенастроить на использование пакета конфигурации BoostConfig.cmake в верхнем уровне Boost, для чего теперь используется find_package(Boost).

Поиск заголовков и библиотек Boost

Используйте этот модуль, вызвав find_package() в следующем формате:

find_package(Boost
  [version] [EXACT]      # Minimum or EXACT version e.g. 1.67.0
  [REQUIRED]             # Fail with error if Boost is not found
  [COMPONENTS <libs>...] # Boost libraries by their canonical name
                         # e.g. "date_time" for "libboost_date_time"
  [OPTIONAL_COMPONENTS <libs>...]
                         # Optional Boost libraries by their canonical name)
  )                      # e.g. "date_time" for "libboost_date_time"

Этот модуль находит заголовки и необходимые компоненты библиотек ИЛИ файл конфигурации пакета CMake, предоставляемый сборкой "Boost CMake". В последнем случае переходите к разделу Boost CMake ниже.

Добавлен в версии 3.7: bzip2 и zlib компоненты (только Windows).

Добавлен в версии 3.11: Опция OPTIONAL_COMPONENTS.

Добавлен в версии 3.13: stacktrace_* компоненты.

Добавлен в версии 3.19: bzip2 и zlib компоненты на всех платформах.

Переменные результатов

Этот модуль определяет следующие переменные:

Boost_FOUND

Истина, если заголовки и необходимые библиотеки были найдены.

Boost_INCLUDE_DIRS

Директории заголовков Boost.

Boost_LIBRARY_DIRS

Директории подключения к библиотекам Boost.

Boost_LIBRARIES

Компоненты библиотек Boost, которые необходимо подключить.

Boost_<COMPONENT>_FOUND

Истина, если компонент <COMPONENT> был найден (имя <COMPONENT> в верхнем регистре).

Boost_<COMPONENT>_LIBRARY

Библиотеки для подключения к компоненту <COMPONENT> (могут включать target_link_libraries() ключи отладки/оптимизации).

Boost_VERSION_MACRO

Значение BOOST_VERSION из boost/version.hpp.

Boost_VERSION_STRING

Номер версии Boost в формате X.Y.Z.

Boost_VERSION

Номер версии Boost в формате X.Y.Z (тот же, что и Boost_VERSION_STRING).

Изменено в версии 3.15: В предыдущих версиях CMake эта переменная использовала строку версии из заголовка Boost (такую же, как Boost_VERSION_MACRO). См. политику CMP0093.

Boost_LIB_VERSION

Строка версии, добавляемая к именам файлов библиотек.

Boost_VERSION_MAJOR, Boost_MAJOR_VERSION

Главный номер версии Boost (X в X.Y.Z).

Boost_VERSION_MINOR, Boost_MINOR_VERSION

Дополнительный номер версии Boost (Y в X.Y.Z).

Boost_VERSION_PATCH, Boost_SUBMINOR_VERSION

Дополнительный номер версии Boost (Z в X.Y.Z).

Boost_VERSION_COUNT

Количество компонентов версии (3).

Boost_LIB_DIAGNOSTIC_DEFINITIONS (Windows-specific)

Передайте в add_definitions(), чтобы отобразить диагностическую информацию об автоматическом подключении Boost во время компиляции.

Добавлен в версии 3.15: Переменные Boost_VERSION_<PART>.

Переменные кэша

Результаты поиска сохраняются в записях кэша CMake:

Boost_INCLUDE_DIR

Директория, содержащая заголовки Boost.

Boost_LIBRARY_DIR_RELEASE

Директория, содержащая релизные библиотеки Boost.

Boost_LIBRARY_DIR_DEBUG

Директория, содержащая отладочные библиотеки Boost.

Boost_<COMPONENT>_LIBRARY_DEBUG

Библиотека компонента <COMPONENT> в режиме отладки.

Boost_<COMPONENT>_LIBRARY_RELEASE

Библиотека компонента <COMPONENT> в релизном режиме.

Добавлен в версии 3.3: Переменные Boost_LIBRARY_DIR_RELEASE и Boost_LIBRARY_DIR_DEBUG для каждой конфигурации.

Подсказки

Этот модуль считывает подсказки о расположении поиска из переменных:

BOOST_ROOT, BOOSTROOT

Предпочитаемый префикс установки.

BOOST_INCLUDEDIR

Предпочитаемая директория заголовков, например <prefix>/include.

BOOST_LIBRARYDIR

Предпочитаемая директория библиотек, например <prefix>/lib.

Boost_NO_SYSTEM_PATHS

Установите в значение ON для отключения поиска в расположениях, не указанных этими подсказками. По умолчанию OFF.

Boost_ADDITIONAL_VERSIONS

Список версий Boost, неизвестных этому модулю. (Расположения установки Boost могут содержать версию).

Пользователи могут установить эти подсказки или результаты в виде CACHE записей. Проекты не должны считывать эти записи напрямую, а вместо этого должны использовать вышеперечисленные переменные результатов. Обратите внимание, что некоторые имена подсказок начинаются с заглавной буквы BOOST. Их можно указать как переменные окружения, если они не указаны как переменные CMake или записи кэша.

Этот модуль сначала ищет файлы заголовков Boost с помощью вышеуказанных переменных подсказок (исключая BOOST_LIBRARYDIR) и сохраняет результат в Boost_INCLUDE_DIR. Затем он ищет запрошенные библиотеки компонентов с помощью вышеупомянутых подсказок (исключая BOOST_INCLUDEDIR и Boost_ADDITIONAL_VERSIONS), директорий "lib" рядом с Boost_INCLUDE_DIR, а также параметров конфигурации имен библиотек ниже. Он сохраняет директории библиотек в Boost_LIBRARY_DIR_DEBUG и Boost_LIBRARY_DIR_RELEASE, а индивидуальные расположения библиотек в Boost_<COMPONENT>_LIBRARY_DEBUG и Boost_<COMPONENT>_LIBRARY_RELEASE. Если пользователь изменяет настройки, используемые предыдущими поисками в той же дереве сборки (исключая переменные окружения), этот модуль отбрасывает результаты предыдущих поисков, которые повлияли на изменения, и выполняет поиск заново.

Импортированные цели

Добавлен в версии 3.5.

Этот модуль определяет следующие IMPORTED цели:

Boost::boost

Цель для зависимостей только из заголовков. (Директория заголовков Boost).

Boost::headers

Добавлен в версии 3.15: Псевдоним для Boost::boost.

Boost::<component>

Цель для зависимости от определенного компонента (динамическая или статическая библиотека); имя <component> в нижнем регистре.

Boost::diagnostic_definitions

Интерфейсная цель для отображения диагностической информации об автоматическом подключении Boost во время компиляции (добавляет -DBOOST_LIB_DIAGNOSTIC).

Boost::disable_autolinking

Интерфейсная цель для отключения автоматического подключения с MSVC (добавляет -DBOOST_ALL_NO_LIB).

Boost::dynamic_linking

Интерфейсная цель для включения динамического подключения с MSVC (добавляет -DBOOST_ALL_DYN_LINK).

Неявные зависимости, такие как Boost::filesystem, требующие Boost::system, будут автоматически обнаружены и удовлетворены, даже если система не указана при использовании find_package() и если Boost::system не добавлена в target_link_libraries(). При использовании Boost::thread, Threads::Threads также будет добавлена автоматически.

Важно отметить, что импортированные цели ведут себя по-другому, чем переменные, созданные этим модулем: несколько вызовов find_package(Boost) в одном каталоге или подкаталогах с различными параметрами (например, статическая или динамическая библиотека) не перезапишут значения целей, созданных при первом вызове.

Другие переменные

Библиотеки Boost имеют множество вариантов, закодированных в их имени файла. Пользователи или проекты могут указать этому модулю, какой вариант искать, задав переменные:

Boost_USE_DEBUG_LIBS

Новое в версии 3.10.

Установлено в ON или OFF для указания поиска и использования отладочных библиотек. По умолчанию ON.

Boost_USE_RELEASE_LIBS

Новое в версии 3.10.

Установлено в ON или OFF для указания поиска и использования релизных библиотек. По умолчанию ON.

Boost_USE_MULTITHREADED

Установлено в ВЫКЛ. для использования немалопоточных библиотек ("mt" тег). По умолчанию ON.

Boost_USE_STATIC_LIBS

Установлено в ВКЛ. для принудительного использования статических библиотек. По умолчанию OFF.

Boost_USE_STATIC_RUNTIME

Установлено в ON или OFF для указания использования библиотек, статически связанных со средой выполнения C++ ("s" тег). По умолчанию зависит от платформы.

Boost_USE_DEBUG_RUNTIME

Установлено в ON или OFF для указания использования библиотек, связанных со средой выполнения отладки MS C++ ("g" тег). По умолчанию ON.

Boost_USE_DEBUG_PYTHON

Установлено в ON для использования библиотек, скомпилированных с отладочной сборкой Python ("y" тег). По умолчанию OFF.

Boost_USE_STLPORT

Установлено в ON для использования библиотек, скомпилированных с STLPort ("p" тег). По умолчанию OFF.

Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS

Установлено в ВКЛ. для использования библиотек, скомпилированных с устаревшей "родной" реализацией iostreams STLPort ("n" тег). По умолчанию OFF.

Boost_COMPILER

Установлено в суффикс библиотеки, специфичный для компилятора (например, -gcc43). По умолчанию вычисляется автоматически для используемого компилятора C++.

Изменено в версии 3.9: Можно использовать список, если необходимо проверить несколько совместимых суффиксов, в порядке убывания предпочтения.

Boost_LIB_PREFIX

Новое в версии 3.18.

Установлено в префикс имени платформенно-специфической библиотеки (например, lib) используемый статическими библиотеками Boost. Это необходимо только на платформах, где CMake по умолчанию не знает префикса.

Boost_ARCHITECTURE

Новое в версии 3.13.

Установлено в суффикс библиотеки, специфичный для архитектуры (например, -x64). По умолчанию вычисляется автоматически для используемого компилятора C++.

Boost_THREADAPI

Суффикс для имени библиотеки компонента thread, такого как pthread или win32 . Будут проверены имена с этим суффиксом и без него.

Boost_NAMESPACE

Альтернативное пространство имён, используемое для построения Boost, например, если установлено в myboost, будет поиск myboost_thread вместо boost_thread.

Другие переменные, которые можно установить для управления этим модулем:

Boost_DEBUG

Установлено в ON для включения отладочного вывода из FindBoost. Пожалуйста, включите это перед отправкой любого отчета об ошибке.

Boost_REALPATH

Установлено в ON для разрешения символьных ссылок для обнаруженных библиотек, чтобы помочь при упаковке. Например, библиотека компонента "system" может быть разрешена в /usr/lib/libboost_system.so.1.67.0 вместо /usr/lib/libboost_system.so. Это не влияет на компоновку и не должно включаться, если эта информация не нужна пользователю.

Boost_LIBRARY_DIR

Значение по умолчанию для Boost_LIBRARY_DIR_RELEASE и Boost_LIBRARY_DIR_DEBUG.

Boost_NO_WARN_NEW_VERSIONS

Новое в версии 3.20.

Установлено в ON для подавления предупреждения о неизвестных зависимостях для новых версий Boost.

В Visual Studio и Borland компиляторах заголовки Boost запрашивают автоматическое связывание с соответствующими библиотеками. Это требует явного связывания или доступности соответствующих библиотек в пути поиска компоновки библиотек. В этом случае установка Boost_USE_STATIC_LIBS в OFF может не обеспечить динамическое связывание. Автоматическое связывание Boost обычно запрашивает статические библиотеки с небольшими исключениями (такими как Boost.Python). Используйте:

add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS})

чтобы попросить Boost сообщить информацию об запросах автоматического связывания.

Примеры

Найти только заголовки Boost:

find_package(Boost 1.36.0)
if(Boost_FOUND)
  include_directories(${Boost_INCLUDE_DIRS})
  add_executable(foo foo.cc)
endif()

Найти библиотеки Boost и использовать импортированные цели:

find_package(Boost 1.56 REQUIRED COMPONENTS
             date_time filesystem iostreams)
add_executable(foo foo.cc)
target_link_libraries(foo Boost::date_time Boost::filesystem
                          Boost::iostreams)

Найти библиотеки Boost Python 3.6 и использовать импортированные цели:

find_package(Boost 1.67 REQUIRED COMPONENTS
             python36 numpy36)
add_executable(foo foo.cc)
target_link_libraries(foo Boost::python36 Boost::numpy36)

Найти заголовки Boost и некоторые статические (только релиз) библиотеки:

set(Boost_USE_STATIC_LIBS        ON)  # only find static libs
set(Boost_USE_DEBUG_LIBS        OFF)  # ignore debug libs and
set(Boost_USE_RELEASE_LIBS       ON)  # only find release libs
set(Boost_USE_MULTITHREADED      ON)
set(Boost_USE_STATIC_RUNTIME    OFF)
find_package(Boost 1.66.0 COMPONENTS date_time filesystem system ...)
if(Boost_FOUND)
  include_directories(${Boost_INCLUDE_DIRS})
  add_executable(foo foo.cc)
  target_link_libraries(foo ${Boost_LIBRARIES})
endif()

Boost CMake

Если Boost был построен с помощью проекта boost-cmake или с Boost 1.70.0 на нем, он предоставляет файл конфигурации пакета для использования с режимом конфигурации find_package. Этот модуль ищет файл конфигурации пакета, называемый BoostConfig.cmake или boost-config.cmake и сохраняет результат в записи CACHE записи Boost_DIR. Если найден, файл конфигурации пакета загружается, и этот модуль возвращается без дальнейших действий. См. документацию пакета конфигурации Boost CMake для получения подробностей о том, что он предоставляет.

Установите Boost_NO_BOOST_CMAKE в ON, чтобы отключить поиск boost-cmake.

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.30/module/FindBoost.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API