LiteRT CMake ビルド手順

このガイドでは、macOS で CMake を使用して LiteRT ランタイムを構成してビルドする方法について説明します。この手順では、Android クロス コンパイル ターゲット(macOS と Linux をホストマシンとして使用)とネイティブ macOS および Linux ビルドの両方について説明します。

一般的なビルドステップ

https://github.com/kitware/cmake/releases から CMake 4.0.1 をインストールします。

すべてのビルド プリセットは、リポジトリのルートから作業することを想定しています。

cd ./litert

生成されたビルドツリーは cmake_build* にあります。並列ビルドは、必要なコア数で -j を使用して制御できます。

利用可能なビルド フレーバー

LiteRT は、ReleaseDebug の両方のビルドフレーバーをサポートしています。

プリセット プラットフォーム ビルドタイプ 出力ディレクトリ
default パソコン(macOS/Linux) リリース cmake_build
default-debug パソコン(macOS/Linux) デバッグ cmake_build_debug
android-arm64 Android arm64 リリース cmake_build_android_arm64
android-arm64-debug Android arm64 デバッグ cmake_build_android_arm64_debug

リリースビルドでは、最適化された本番環境バイナリに -O3 -DNDEBUG を使用します。デバッグ ビルドは、完全なシンボル情報を使用してデバッグするために -O0 -g を使用します。

Android(arm64)のクロス コンパイル

  1. Android NDK をインストールし、CMake が見つけられるようにパスをエクスポートします。

    export ANDROID_NDK_HOME=/absolute/path/to/android-ndk-r27
    
  2. ホスト側の flatbuffer ツールを構成する

    cmake --preset android-arm64;
    
  3. 提供されたプリセットを使用して LiteRT Android ビルドを構成し、生成された FlatBuffers ツールを指定します。

    # For Release build:
    cmake --preset android-arm64 \
      -DTFLITE_HOST_TOOLS_DIR="$(cd ../host_flatc_build/_deps/flatbuffers-build && pwd)"
    
    # For Debug build:
    cmake --preset android-arm64-debug \
      -DTFLITE_HOST_TOOLS_DIR="$(cd ../host_flatc_build/_deps/flatbuffers-build && pwd)"
    
  4. Android 用の LiteRT をビルドします。

    # For Release build:
    cmake --build cmake_build_android_arm64 -j
    
    # For Debug build:
    cmake --build cmake_build_android_arm64_debug -j
    

静的ライブラリなどのアーティファクトは、対応するビルド ディレクトリ(cmake_build_android_arm64 または cmake_build_android_arm64_debug)に出力されます。

macOS と Linux からのデスクトップ ビルド

  1. デスクトップ ビルドのデフォルトのプリセットを構成します。

    # For Release build:
    cmake --preset default
    
    # For Debug build:
    cmake --preset default-debug
    
  2. LiteRT をビルドします。

    # For Release build:
    cmake --build cmake_build -j
    
    # For Debug build:
    cmake --build cmake_build_debug -j
    

ビルド ターゲットをカスタマイズする

CMake ビルドをカスタマイズする

CMake オプションを使用して、ターゲットにコンパイルされるツールチェーンと機能を制御します。例:

cmake -S . -B build-release \
      -DCMAKE_BUILD_TYPE=Release \
      -DLITERT_AUTO_BUILD_TFLITE=ON \
      -DLITERT_ENABLE_GPU=OFF \
      -DLITERT_ENABLE_NPU=OFF \
      -DLITERT_DISABLE_KLEIDIAI=ON \
      -DLITERT_HOST_C_COMPILER=/usr/bin/clang \
      -DLITERT_HOST_CXX_COMPILER=/usr/bin/clang++
cmake --build build-release --target dispatch_api_Qualcomm_so -j8
  • LITERT_HOST_C_COMPILER / LITERT_HOST_CXX_COMPILER を使用すると、CMakeLists.txt を編集せずに、ヘルパー ホストツールを任意の Clang/GCC インストールに指定できます。
  • LITERT_DISABLE_KLEIDIAI は、KleidiAI をスキップすることで x86 デスクトップ ビルドの再現性を維持します。デリゲートをバンドルする場合は、OFF に設定します。
  • 最適化されたアーティファクトが必要な場合は、常に -DCMAKE_BUILD_TYPE=Release(または同等のプリセット)を渡します。これにより、CMake は -O3 -DNDEBUG を使用します。

最小サイズのベンダー ライブラリを生成する

リンク時にデッド ストリッピングを有効にして、ディスパッチ ライブラリのサイズを Bazel のサイズと一致させます。

  • macOS: -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,-dead_strip -dead_strip_dylibs" を追加します(実行可能ファイルをストリップする場合は CMAKE_EXE_LINKER_FLAGS_RELEASE も追加します)。ビルド後、strip -x path/to/libLiteRtDispatch_Qualcomm.dylib を実行します。
  • Linux: -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,--gc-sections" を追加して strip --strip-unneeded path/to/libLiteRtDispatch_Qualcomm.so を実行します(または POST_BUILD コマンドにします)。

これらのフラグは CMakePresets.jsoncmake --preset … エントリに直接配置できるため、チームのすべてのデベロッパーが同じ構成を取得できます。

トラブルシューティングのヒント

  • ツールチェーンまたは主要な構成オプションを変更した場合は、対応する cmake_build* ディレクトリを削除してから、構成手順を再実行します。
  • 各ビルドツリー内の CMakeCache.txt を調べて、解決された依存関係パスを確認します。