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 -
New in version 3.10.
Установлено в
ONилиOFFдля указания, нужно ли искать и использовать библиотеки отладки. По умолчаниюON. -
Boost_USE_RELEASE_LIBS -
New in version 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 для использования библиотек, скомпилированных с устаревшими "родными iostream" STLPort ("n" тег). По умолчанию
OFF. -
Boost_COMPILER -
Установлено в суффикс библиотеки, специфичный для компилятора (например,
-gcc43). По умолчанию вычисляется автоматически для используемого C++ компилятора.Изменено в версии 3.9: Может быть использован список, если нужно протестировать несколько совместимых суффиксов, в порядке убывания предпочтения.
-
Boost_LIB_PREFIX -
New in version 3.18.
Установлено в префикс имени библиотеки, специфичный для платформы (например,
lib), используемый статическими Boost библиотеками. Это необходимо только на платформах, где CMake по умолчанию не знает префикса. -
Boost_ARCHITECTURE -
New in version 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 -
New in version 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.29/module/FindBoost.html