ハブラハブの読者の皆さん、こんにちは。 このブログでは、CMakeプロジェクトでIntel Threading Building Blocks(Intel TBB)をダウンロード、アセンブル、および簡単に使用できるCMakeモジュールを発表しました。 モジュールは、Intel TBB 2017 Update 7のリリース以降、 GitHubのIntel TBBプロジェクトリポジトリ 、およびLinux * OS、Windows * OSおよびmacOS *のバイナリパッケージで利用できます。
Intel TBB CMakeモジュールの使用
新しいモジュールにより、インテルTBBバイナリパッケージをプロジェクトに簡単に統合できるだけでなく、GitHubから特定のバージョンをダウンロードし、ソースコードからライブラリを構築するより複雑なオプションも利用できます。 モジュールの詳細な技術的説明は、 ドキュメントに記載されています 。
プロジェクトでのライブラリ統合
TBBConfig.cmakeおよびTBBConfigVersion.cmake構成ファイルは、Intel TBBを使用するために必要な変数とインポートされたターゲットを提供します。 ファイルは、Intel TBB 2017 Update 7のリリース以降、Linux * OS、Windows * OSまたはmacOS *のバイナリパッケージの<tbb_root> / cmakeフォルダーにあります。
アルゴリズム:
- バイナリパッケージをダウンロードして解凍します。
- 接続されたライブラリのルートフォルダの場所を変数CMAKE_PREFIX_PATHに追加するか、構成ファイルへのパスを変数TBB_DIRに追加します。
- find_package (TBB)関数を呼び出し、必要に応じて必要なパラメーターを追加します。
- 結果の変数および/またはインポートされたターゲットを使用します。
必要なライブラリコンポーネントは、 find_package関数を呼び出すときにCOMPONENTSまたはREQUIREDキーワードの後にリストできます。たとえば、tbb、tbbmalloc、tbb_previewなどです。 デフォルトでは、tbb、tbbmalloc、およびtbbmalloc_proxyコンポーネントが使用可能です。 TBB :: <component>形式のインポートされたターゲットは、コンポーネントごとに作成されます。
以下の変数が定義されています:
TBB_FOUND
| Intel TBB検索成功フラグ
|
TBB_ <コンポーネント> _FOUND
| 単一コンポーネント検索成功フラグ
|
TBB_IMPORTED_TARGETS
| 作成されたすべてのインポートされた目標
|
TBB_VERSION
| Intel TBBバージョン(形式:<メジャー>。<マイナー>)
|
TBB_INTERFACE_VERSION
| Intel TBBインターフェイスバージョン
|
現時点では、ライブラリの目的のバージョンを指定する場合、制限があります。<major>。<minor>形式自体のバージョンの互換性のみが自動的にチェックされますが、同じバージョン内のさまざまな更新の互換性はチェックされません。 インターフェイスのバージョンは、変数TBB_INTERFACE_VERSIONを使用して確認できます。
TBBBuildを使用してソースからIntel TBBをビルドします
TBBBuild.cmakeモジュールはtbb_build関数を提供します。これにより、ネイティブライブラリインフラストラクチャ(Makefile)を使用してソースコードからライブラリをコンパイルできます。 Linux * OSおよびmacOS *でビルドするには、makeユーティリティが必要で、Windows * OSではgmakeが必要です。 アセンブリ自体の後、必要な構成ファイルが<tbb_root> / cmakeフォルダーに作成されます。
tbb_build関数は、次のパラメーターを受け入れます。
TBB_ROOT <変数>
| 収集するライブラリのルートフォルダーへのパス
|
CONFIG_DIR <変数>
| 構成ファイルが作成されたフォルダーへのフルパスが書き込まれる変数。
<変数>-ビルドエラーの場合、NOTFOUND値が返されます |
MAKE_ARGS <custom_make_arguments>
| makeコマンドのカスタム引数。
次の引数は、<custom_make_arguments>でオーバーライドされない場合に自動的に決定され、渡されます。
|
モジュールの使用例:
include(<path-to-tbb-cmake-modules>/TBBBuild.cmake) tbb_build(TBB_ROOT <tbb_root> CONFIG_DIR TBB_DIR) find_package(TBB <options>)
TBBGetを搭載したIntel TBBをダウンロードする
TBBGet.cmakeモジュールはtbb_get関数を提供します。これにより、GitHubから公式のインテルTBBリリース用のバイナリパッケージとソースパッケージをダウンロードして解凍できます。 Intel TBB 2017 Update 7より古いバイナリパッケージの場合、構成ファイルは<tbb_root> / cmakeフォルダーに自動的に作成されます。
tbb_get関数は、次のパラメーターを受け入れます。
TBB_ROOT <変数>
| ダウンロードおよび解凍されたパッケージのルートフォルダーへのフルパスが書き込まれる変数。
<変数>-ダウンロード中にエラーが発生した場合、NOTFOUND値が返されます |
RELEASE_TAG <release_tag> |最新
| ダウンロード用のリリースタグ。
デフォルト値はLATESTです |
SAVE_TO <パス>
| ダウンロードしたパッケージを解凍するパス。
デフォルトは$ { CMAKE_CURRENT_BINARY_DIR } / tbb_downloadedです |
SYSTEM_NAME Linux | Windows |ダーウィン
| バイナリパッケージをダウンロードする必要があるOS。
デフォルト値は変数CMAKE_SYSTEM_NAMEです |
CONFIG_DIR <変数>
| 構成ファイルへのフルパスが書き込まれる変数。
フラグSOURCE_CODEが指定されている場合、パラメーターは無視されます |
SOURCE_CODE
| バイナリパッケージの代わりにソースコードを含むパッケージをダウンロードする必要があることを示すフラグ
|
モジュールの使用例:
- 現在のOSの最新のバイナリパッケージをダウンロードして接続する
include(<path-to-tbb-cmake-modules>/TBBGet.cmake) tbb_get(TBB_ROOT tbb_root CONFIG_DIR TBB_DIR) find_package(TBB <options>)
- 最新のソースパッケージのダウンロード、ビルド、接続
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>)
Intel TBB接続を使用したサンプルのGettingStarted / sub_string_finderに基づくデモプロジェクト
Windows * OSでのバイナリパッケージの接続
この例では、Intel TBBバイナリパッケージを有効にして、GettingStarted / sub_string_finderに基づくCMakeプロジェクトを作成します。 この例はWindows * OS(Microsoft * Visual Studio)用に作成されていますが、わずかな変更を加えて他のOSでも使用できます。
キーワード<version>および<date>は、ダウンロードしたパッケージの実際の値に置き換える必要があります。
最小要件:
指示:
キーワード<version>および<date>は、ダウンロードしたパッケージの実際の値に置き換える必要があります。
最小要件:
- CMake 3.0.0
- Microsoft * Visual Studio 11(Intel TBB 2017 Update 7用)
- Intel TBB 2017 Update 7
指示:
- Intel TBB for Windows * OSをダウンロードし、Cに解凍します:\ demo_tbb_cmake
- C:\ demo_tbb_cmake \ tbb <version> _ <date> oss \ examples \ GettingStarted \ sub_string_finderフォルダーで、次の内容のCMakeLists.txtファイルを作成します。
cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR) project(sub_string_finder CXX) add_executable(sub_string_finder sub_string_finder.cpp) # find_package TBBConfig, # CMAKE_PREFIX_PATH TBB_DIR. find_package(TBB REQUIRED tbb) # "TBB::tbb" "${TBB_IMPORTED_TARGETS}" target_link_libraries(sub_string_finder ${TBB_IMPORTED_TARGETS})
- CMake GUIを起動し、
- フィールドに入力します(「ソースの参照...」ボタンと「ビルドの参照...」ボタンを使用できます)。
「ソースコードはどこにありますか」:
C:/ demo_tbb_cmake / tbb <バージョン> _ <日付> oss / examples / GettingStarted / sub_string_finder
「バイナリをビルドする場所」:
C:/ demo_tbb_cmake / tbb <バージョン> _ <日付> oss / examples / GettingStarted / sub_string_finder / build - [エントリの追加]ボタンを使用して、キャッシュに新しい変数を追加します。
名前:CMAKE_PREFIX_PATH
タイプ:PATH
値:C:/ demo_tbb_cmake / tbb <バージョン> _ <日付> oss - [生成]ボタンをクリックして、Microsoft * Visual Studioプロジェクトを作成します。
- フィールドに入力します(「ソースの参照...」ボタンと「ビルドの参照...」ボタンを使用できます)。
- これで、結果のプロジェクトをMicrosoft Visual Studioで開き(たとえば、CMake GUIの[プロジェクトを開く]ボタンをクリックして)、ビルドできます。 生成されたプロジェクトへのパス:
C:\ demo_tbb_cmake \ tbb <バージョン> _ <日付> oss \ examples \ GettingStarted \ sub_string_finder \ build \ sub_string_finder.sln。
プロジェクト生成後のCMake GUIウィンドウ:
ソースコードからライブラリを構築し、プロジェクトに接続する
この例では、GettingStarted / sub_string_finderに基づいてCMakeプロジェクトを作成します。このプロジェクトでは、 コミュニティプレビュー機能(CPF)を有効にしてIntel TBBを構築して接続します 。 この例はLinux * OS向けに書かれていますが、わずかな変更を加えて他のOSでも使用できます。
最小要件:
指示:
最小要件:
- CMake 3.0.0
指示:
- Intel TBBリポジトリを〜/ demo_tbb_cmakeフォルダーに複製します。
mkdir ~/demo_tbb_cmake cd ~/demo_tbb_cmake git clone https://github.com/01org/tbb.git
- 〜/ demo_tbb_cmake / tbb / examples / GettingStarted / sub_string_finderフォルダーで、次の内容のCMakeLists.txtファイルを作成します。
cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR) project(sub_string_finder CXX) add_executable(sub_string_finder sub_string_finder.cpp) include(${TBB_ROOT}/cmake/TBBBuild.cmake) # Intel TBB Community Preview Features (CPF). tbb_build(TBB_ROOT ${TBB_ROOT} CONFIG_DIR TBB_DIR MAKE_ARGS tbb_cpf=1) find_package(TBB REQUIRED tbb_preview) # "TBB::tbb_preview" "${TBB_IMPORTED_TARGETS}". target_link_libraries(sub_string_finder ${TBB_IMPORTED_TARGETS})
- プロジェクトをビルドするフォルダーを作成してそこに移動します。
mkdir ~/demo_tbb_cmake/tbb/examples/GettingStarted/sub_string_finder/build cd ~/demo_tbb_cmake/tbb/examples/GettingStarted/sub_string_finder/build
- Intel TBBライブラリのルートフォルダーを指定してCMakeを起動します。
cmake -DTBB_ROOT=${HOME}/demo_tbb_cmake/tbb ..
- プロジェクトをビルドして実行します。
make ./sub_string_finder
おわりに
インテルTBBチームは、ライブラリをカスタムCMakeプロジェクトに便利に統合することに関心があります。 この問題を解決するためだけに、新しいモジュールが作成されます。 これらは、多くのユースケースでシンプルで柔軟なインターフェースを提供します。 これらのモジュールをお試しいただき、フィードバックをお待ちしています。
リンクと連絡先:
- メール: inteltbbdevelopers@intel.com
- GitHubのプロジェクト 。
- 私たちのフォーラム 。
*他の名前およびブランドは、他者の知的財産として宣言される場合があります。