Информационный портал по безопасности » Программирование » Интеграция Intel Threading Building Blocks в ваш CMake проект

 

Интеграция Intel Threading Building Blocks в ваш CMake проект

Автор: admin от 14-08-2017, 10:00, посмотрело: 588

репозитории проекта Intel TBB на GitHub, а также в бинарных пакетах для Linux* OS, Windows* OS и macOS*, начиная с релиза Intel TBB 2017 Update 7.





Использование Intel TBB CMake модулей



Новые модули позволяют осуществлять как простую интеграцию бинарных пакетов Intel TBB в проект, так и более сложные варианты со скачиванием определённых версий с GitHub и сборкой библиотеки из исходного кода. Подробное техническое описание модулей можно найти в документации.



Интеграция библиотеки в проект



Конфигурационные файлы TBBConfig.cmake и TBBConfigVersion.cmake позволяют получить необходимые переменные и импортированные цели для использования Intel TBB. Файлы находятся в папке /cmake в бинарных пакетах для Linux* OS, Windows* OS или macOS*, начиная с релиза Intel TBB 2017 Update 7.

Алгоритм:


  • Скачать и распаковать бинарный пакет.

  • Добавить расположение корневой папки подключаемой библиотеки в переменную CMAKE_PREFIX_PATH или путь до конфигурационных файлов в переменную TBB_DIR.

  • Вызвать функцию find_package (TBB), добавив нужные параметры при необходимости.

  • Использовать полученные переменные и/или импортированные цели.



  • Необходимые компоненты библиотеки могут быть перечислены после ключевого слова COMPONENTS или REQUIRED при вызове функции find_package, например, tbb, tbbmalloc, tbb_preview и т.д. По умолчанию доступны компоненты tbb, tbbmalloc и tbbmalloc_proxy. Для каждого компонента создаётся импортированная цель формата TBB::.

    Определяются следующие переменные:






















    TBB_FOUND

    флаг успешности поиска Intel TBB

    TBB__FOUND

    флаг успешности поиска отдельного компонента

    TBB_IMPORTED_TARGETS

    все созданные импортированные цели

    TBB_VERSION

    версия Intel TBB (формат: .)

    TBB_INTERFACE_VERSION

    версия интерфейса Intel TBB



    На данный момент при указании желаемой версии библиотеки есть ограничение: автоматически проверяется только совместимость самих версий формата ., но не проверяется совместимость различных апдейтов в рамках одной версии. Версия интерфейса может быть проверена с использованием переменной TBB_INTERFACE_VERSION.



    Сборка Intel TBB из исходного кода с помощью TBBBuild



    Модуль TBBBuild.cmake предоставляет функцию tbb_build, которая позволяет собрать библиотеку из исходного кода с использованием родной инфраструктуры библиотеки (Makefile). Для сборки на Linux* OS и macOS* необходимо наличие make-утилиты, а на Windows* OS – gmake. После непосредственно сборки создаются нужные конфигурационные файлы в папке /cmake.

    Функция tbb_build принимает следующие параметры:














    TBB_ROOT

    путь до корневой папки бибилотеки, которую нужно собрать

    CONFIG_DIR

    переменная, в которую запишется полный путь к папке с созданными конфигурационными файлами;

    значение -NOTFOUND будет возвращено в случае ошибки при сборке

    MAKE_ARGS

    настраиваемые аргументы для make-команды;

    следующие аргументы определяются и передаются автоматически, если они не переопределены в :


    • compiler=

    • tbb_build_dir=

    • tbb_build_prefix=

    • -j





    Пример использования модуля:

    include(<path-to-tbb-cmake-modules>/TBBBuild.cmake)
    tbb_build(TBB_ROOT <tbb_root> CONFIG_DIR TBB_DIR)
    find_package(TBB <options>)




    Скачивание Intel TBB с помощью TBBGet



    Модуль TBBGet.cmake предоставляет функцию tbb_get, которая позволяет скачивать и распаковывать бинарные пакеты и пакеты с исходным кодом для официальных релизов Intel TBB с GitHub. Для бинарных пакетов старше Intel TBB 2017 Update 7 конфигурационные файлы создаются автоматически в папке /cmake.

    Функция tbb_get принимает следующие параметры:


























    TBB_ROOT

    переменная, в которую будет записан полный путь к корневой папке скачанного и распакованного пакета;

    значение -NOTFOUND будет возвращено в случае ошибки при скачивании

    RELEASE_TAG |LATEST

    тег релиза для скачивания;

    по умолчанию используется значение LATEST

    SAVE_TO

    путь для распаковки скачанного пакета;

    по умолчанию используется ${CMAKE_CURRENT_BINARY_DIR}/tbb_downloaded

    SYSTEM_NAME Linux|Windows|Darwin

    ОС, для которой необходимо скачать бинарный пакет;

    по умолчанию используется значение переменной CMAKE_SYSTEM_NAME

    CONFIG_DIR

    переменная, в которую будет записан полный путь до конфигурационных файлов;

    параметр игнорируется, если указан флаг SOURCE_CODE

    SOURCE_CODE

    флаг, сигнализирующий о необходимости скачивания пакета с исходным кодом вместо бинарного пакета



    Примеры использования модуля:


    1. Скачивание и подключение самого свежего бинарного пакета для текущей ОС

      include(<path-to-tbb-cmake-modules>/TBBGet.cmake)
      tbb_get(TBB_ROOT tbb_root CONFIG_DIR TBB_DIR)
      find_package(TBB <options>)



    2. Скачивание, сборка и подключение самого свежего пакета с исходным кодом

      include(<path-to-tbb-cmake-modules>/TBBGet.cmake)
      include(<path-to-tbb-cmake-modules>/TBBBuild.cmake)
      tbb_get(TBB_ROOT tbb_root SOURCE_CODE)
      tbb_build(TBB_ROOT ${tbb_root} CONFIG_DIR TBB_DIR)
      find_package(TBB <options>)
      





    Демо-проекты на базе примера GettingStarted/sub_string_finder с подключением Intel TBB













    Заключение



    Команда Intel TBB заинтересована в удобной интеграции библиотеки в пользовательские CMake проекты. Новые модули созданы как раз для решения этой задачи. Они предоставляют простой и гибкий интерфейс со множеством вариантов использования. Надеемся, вы попробуете эти модули, и ждём ваших отзывов.

    Ссылки и контакты:





    * прочие названия и бренды могут быть объявлены интеллектуальной собственностью других лиц

    Источник: Хабрахабр

    Категория: Программирование

    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

    Добавление комментария

    Имя:*
    E-Mail:
    Комментарий:
    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent