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 -
Устанавливается в 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–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/module/FindBoost.html