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для указания, использовать ли библиотеки, связанные с отладочной C++ runtime MS ("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–2023 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.26/module/FindBoost.html