Spec-Zone.ru › CMake 3.23

FindBoost

Поиск директорий заголовков и библиотек 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() ключевые слова debug/optimized).

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

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

Boost_USE_STATIC_LIBS

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

Boost_USE_STATIC_RUNTIME

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

Boost_USE_DEBUG_RUNTIME

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

Boost_USE_DEBUG_PYTHON

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

Boost_USE_STLPORT

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

Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS

Установлено в ON для использования библиотек, скомпилированных с устаревшими "родными 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–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.23/module/FindBoost.html

Spec-Zone.ru

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