CMake を使用してプラグインをビルド¶
OpenVINO ビルド基盤は、プラグイン開発用の OpenVINO デベロッパー・パッケージを提供します。
OpenVINO デベロッパー・パッケージ¶
OpenVINO 開発者パッケージを自動的に生成するには、OpenVINO ビルド中に cmake
ツールを実行します。
$ mkdir openvino-release-build
$ cd openvino-release-build
$ cmake -DCMAKE_BUILD_TYPE=Release ../openvino
上記のコマンドを実行すると、OpenVINO デベロッパー・パッケージが openvino-release-build
フォルダーに生成されます。これはいくつかのファイルで構成されています。
OpenVINODeveloperPackageConfig.cmake
- ターゲットをインポートし、コンパイルフラグと CMake オプションを提供するメインの CMake スクリプト。OpenVINODeveloperPackageConfig-version.cmake
- パッケージのバージョンを含むファイル。-
targets_developer.cmake
- OpenVINO ビルドツリーからエクスポートされたすべてのターゲットを含む、自動生成されたファイル。このファイルは、次のターゲットをインポートするためOpenVINODeveloperPackageConfig.cmake
に組み込まれます。-
プラグイン開発用のライブラリー:
openvino::runtime
- 共有 OpenVINO ライブラリーopenvino::runtime::dev
- OpenVINO デベロッパー API を使用したインターフェース・ライブラリーopenvino::pugixml
- 静的 Pugixml ライブラリーopenvino::xbyak
- Xbyak ヘッダーを備えたインターフェース・ライブラリーopenvino::itt
- インテル ITT を使用したパフォーマンス測定ツールを備えた静的ライブラリー
-
テスト開発用のライブラリー:
openvino::gtest
、openvino::gtest_main
、openvino::gmock
- Google テスト・フレームワーク・ライブラリーopenvino::common_test_utils
- 一般的なテスト・ユーティリティーを備えた静的ライブラリーopenvino::func_test_utils
- 機能テスト・ユーティリティーを備えた静的ライブラリーopenvino::unit_test_utils
- ユニット・テスト・ユーティリティーを備えた静的ライブラリーopenvino::ov_models
-ov::Model
ビルダーのセットを含む静的ライブラリーopenvino::funcSharedTests
- 一般的な機能テストを備えた静的ライブラリー
-
注
cmake --build . --target ov_dev_targets
コマンドを実行して、OpenVINO デベロッパー・パッケージからターゲットのみをビルドするだけで十分です。
OpenVINO デベロッパー・パッケージを使用してプラグインをビルド¶
OpenVINO デベロッパー・パッケージを使用してプラグイン・ソース・ツリーをビルドするには、以下のコマンドを実行します。
$ mkdir template-plugin-release-build
$ cd template-plugin-release-build
$ cmake -DOpenVINODeveloperPackage_DIR=../openvino-release-build ../template-plugin
一般的なプラグインは次のコンポーネントで構成されます。
src
フォルダー内のプラグインコードtests
フォルダー内のテストのコード
プラグインとそのテストをビルドするには、次の CMake スクリプトを実行します。
ルート
CMakeLists.txt
は、find_package
CMake コマンドを使用して OpenVINO デベロッパー・パッケージを検索し、プラグインソースとそのテストをそれぞれ含むsrc
サブディレクトリーとtests
サブディレクトリーを追加します。
cmake_minimum_required(VERSION 3.13)
project(OpenVINOTemplatePlugin)
find_package(OpenVINODeveloperPackage REQUIRED)
ov_option(ENABLE_TEMPLATE_REGISTRATION "Enables registration of TEMPLATE plugin" OFF)
if(CMAKE_COMPILER_IS_GNUCXX)
ov_add_compiler_flags(-Wall)
endif()
add_subdirectory(src)
if(ENABLE_TESTS)
include(CTest)
enable_testing()
if(ENABLE_FUNCTIONAL_TESTS)
add_subdirectory(tests/functional)
endif()
endif()
# install
if(OpenVINODeveloperPackage_FOUND)
ov_cpack(template)
endif()
注
ENABLE_TESTS
、ENABLE_FUNCTIONAL_TESTS
オプションのデフォルト値は OpenVINO デベロッパー・パッケージを介して共有され、メインの OpenVINO ビルドツリーと同一になります。以下のコマンドでプラグインのビルド中にそれらをオーバーライドできます。
$ cmake -DENABLE_FUNCTIONAL_TESTS=OFF -DOpenVINODeveloperPackage_DIR=../openvino-release-build ../template-plugin
src/CMakeLists.txt
は、ソースからプラグイン共有ライブラリーをビルドします。
set(TARGET_NAME "openvino_template_plugin")
file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
file(GLOB_RECURSE HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp)
if (NOT ENABLE_TEMPLATE_REGISTRATION)
# Skip install and registration of template component
set(skip_plugin SKIP_INSTALL SKIP_REGISTRATION)
endif()
# adds a shared library with plugin
ov_add_plugin(NAME ${TARGET_NAME}
DEVICE_NAME "TEMPLATE"
SOURCES ${SOURCES} ${HEADERS}
${skip_plugin}
VERSION_DEFINES_FOR plugin.cpp
ADD_CLANG_FORMAT)
# Enable support of CC for the plugin
ov_mark_target_as_cc(${TARGET_NAME})
target_include_directories(${TARGET_NAME} PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}"
"${OpenVINOTemplatePlugin_SOURCE_DIR}/include")
# link common OpenVINO Runtime libraries
target_link_libraries(${TARGET_NAME} PRIVATE
openvino::interpreter_backend
openvino::reference)
set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO})
if (ENABLE_TEMPLATE_REGISTRATION)
# Update the plugins.xml file
ov_register_plugins(MAIN_TARGET ${TARGET_NAME})
endif()
注
openvino::...
ターゲットは OpenVINO デベロッパー・パッケージからインポートされます。
tests/functional/CMakeLists.txt
は一連の機能プラグインテストをビルドします。
set(TARGET_NAME ov_template_func_tests)
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
ov_add_compiler_flags(/wd4305)
endif()
ov_add_test_target(
NAME ${TARGET_NAME}
ROOT ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDENCIES
openvino_template_plugin
LINK_LIBRARIES
openvino::funcSharedTests
openvino::runtime::dev
INCLUDES
"${OpenVINOTemplatePlugin_SOURCE_DIR}/include"
"${CMAKE_CURRENT_SOURCE_DIR}/op_reference"
ADD_CLANG_FORMAT
LABELS
OV UNIT TEMPLATE
)
find_package(OpenCV QUIET COMPONENTS core imgproc)
if(OpenCV_FOUND AND OpenCV_VERSION VERSION_GREATER_EQUAL 3.4)
message(STATUS "Reference preprocessing: OpenCV tests are enabled")
target_compile_definitions(${TARGET_NAME} PRIVATE OPENCV_TEMPLATE_TESTS)
target_link_libraries(${TARGET_NAME} PRIVATE opencv_imgproc opencv_core)
else()
message(WARNING "Reference preprocessing: OpenCV tests are disabled, because OpenCV ver. 3.4+ is not found")
endif()
if (ENABLE_INTEL_CPU)
set_source_files_properties(
"${CMAKE_CURRENT_SOURCE_DIR}/shared_tests_instances/behavior/executable_network/get_metric.cpp"
PROPERTIES COMPILE_DEFINITIONS ENABLE_INTEL_CPU=1)
endif()
注
共通の機能 OpenVINO プラグインテストを含む openvino::funcSharedTests
静的ライブラリーは、OpenVINO デベロッパー・パッケージ経由でインポートされます。