Instructions de compilation CMake pour LiteRT

Utilisez ce guide pour configurer et compiler le runtime LiteRT avec CMake sur macOS. Les instructions couvrent à la fois les cibles de compilation croisée Android (à l'aide de macOS et Linux comme machine hôte) et les compilations macOS et Linux natives.

Étapes de compilation courantes

Installez CMake 4.0.1 à partir de : https://github.com/kitware/cmake/releases.

Tous les préréglages de compilation s'attendent à ce que vous travailliez à partir de la racine du dépôt :

cd ./litert

Les arborescences de compilation générées se trouvent sous cmake_build*. Les compilations parallèles peuvent être contrôlées via -j avec le nombre de cœurs souhaité.

Saveurs de compilation disponibles

LiteRT est compatible avec les variantes de compilation Release et Debug :

Préréglage Plate-forme Type de build Répertoire de sortie
default Ordinateur (macOS/Linux) Version cmake_build
default-debug Ordinateur (macOS/Linux) Déboguer cmake_build_debug
android-arm64 Android arm64 Version cmake_build_android_arm64
android-arm64-debug Android arm64 Déboguer cmake_build_android_arm64_debug

Les builds Release utilisent -O3 -DNDEBUG pour les binaires de production optimisés. Les compilations Debug utilisent -O0 -g pour le débogage avec des informations de symbole complètes.

Compilation croisée Android (arm64)

  1. Installez le NDK Android et exportez le chemin d'accès pour que CMake puisse le trouver :

    export ANDROID_NDK_HOME=/absolute/path/to/android-ndk-r27
    
  2. Configurer les outils Flatbuffer côté hôte

    cmake --preset android-arm64;
    
  3. Configurez la compilation LiteRT Android à l'aide du préréglage fourni et pointez vers les outils FlatBuffers générés :

    # 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. Compiler LiteRT pour Android :

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

Les artefacts tels que les bibliothèques statiques seront émis dans le répertoire de compilation correspondant (cmake_build_android_arm64 ou cmake_build_android_arm64_debug).

Créer une version pour ordinateur depuis macOS et Linux

  1. Configurez le préréglage par défaut pour les builds Desktop :

    # For Release build:
    cmake --preset default
    
    # For Debug build:
    cmake --preset default-debug
    
  2. Compiler LiteRT :

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

Personnaliser votre cible de compilation

Personnaliser les compilations CMake

Utilisez les options CMake pour contrôler les chaînes d'outils et les fonctionnalités compilées dans vos cibles. Par exemple :

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 vous permettent de pointer les outils hôtes d'assistance vers n'importe quelle installation Clang/GCC sans modifier CMakeLists.txt.
  • LITERT_DISABLE_KLEIDIAI permet de conserver la reproductibilité des builds de bureau x86 en ignorant KleidiAI. Définissez-le sur OFF chaque fois que vous souhaitez regrouper le délégué.
  • Transmettez toujours -DCMAKE_BUILD_TYPE=Release (ou le préréglage équivalent) lorsque vous avez besoin de l'artefact optimisé. CMake utilise alors -O3 -DNDEBUG pour vous.

Produire des bibliothèques de fournisseurs de taille minimale

Au moment de l'association, activez la suppression des codes inutilisés pour que les bibliothèques de répartition correspondent à la taille de Bazel :

  • macOS : ajoutez -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,-dead_strip -dead_strip_dylibs" (et la même chose pour CMAKE_EXE_LINKER_FLAGS_RELEASE si vous souhaitez supprimer les exécutables). Après la compilation, exécutez strip -x path/to/libLiteRtDispatch_Qualcomm.dylib.
  • Linux : ajoutez -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,--gc-sections" et exécutez strip --strip-unneeded path/to/libLiteRtDispatch_Qualcomm.so (ou faites-en une commande POST_BUILD).

Ces indicateurs peuvent être placés directement dans les entrées cmake --preset … de CMakePresets.json afin que chaque développeur de votre équipe bénéficie de la même configuration.

Conseils de dépannage

  • Si vous modifiez des chaînes d'outils ou des options de configuration majeures, supprimez le répertoire cmake_build* correspondant, puis réexécutez l'étape de configuration.
  • Inspectez CMakeCache.txt dans chaque arborescence de compilation pour les chemins de dépendance résolus.