Spec-Zone.ru › CMake 3.31

FindBoost

Изменено в версии 3.30: Этот модуль доступен только в том случае, если политика CMP0167 не установлена в NEW. Проекты порта переносятся в конфигурационный файл пакета BoostConfig.cmake Boost upstream, для которого 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() ключевые слова 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 debug 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 для использования библиотек, скомпилированных с устаревшими "native 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.31/module/FindBoost.html

Spec-Zone.ru

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