Istruzioni di build di CMake per LiteRT

Utilizza questa guida per configurare e creare il runtime LiteRT con CMake su macOS. Le istruzioni riguardano sia i target di compilazione incrociata Android (utilizzando macOS e Linux come macchina host) sia le build macOS e Linux native.

Passaggi di build comuni

Installa CMake 4.0.1 da: https://github.com/kitware/cmake/releases

Tutti i preset di build prevedono che tu lavori dalla radice del repository:

cd ./litert

Gli alberi di build generati si trovano in cmake_build*. Le build parallele possono essere controllate tramite -j con il numero di core desiderato.

Varianti di build disponibili

LiteRT supporta sia le varianti di build Release che Debug:

Preset Piattaforma Tipo di build Directory di output
default Computer (macOS/Linux) Rilascia cmake_build
default-debug Computer (macOS/Linux) Debug cmake_build_debug
android-arm64 Android arm64 Rilascia cmake_build_android_arm64
android-arm64-debug Android arm64 Debug cmake_build_android_arm64_debug

Le build Release utilizzano -O3 -DNDEBUG per i binari di produzione ottimizzati. Le build Debug utilizzano -O0 -g per il debug con informazioni complete sui simboli.

Compilazione incrociata Android (arm64)

  1. Installa l'NDK per Android ed esporta il percorso in modo che CMake possa trovarlo:

    export ANDROID_NDK_HOME=/absolute/path/to/android-ndk-r27
    
  2. Configurare gli strumenti Flatbuffer lato host

    cmake --preset android-arm64;
    
  3. Configura la build Android LiteRT utilizzando il preset fornito e punta agli strumenti FlatBuffers generati:

    # 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. Crea LiteRT per Android:

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

Gli artefatti come le librerie statiche verranno emessi nella directory di build corrispondente (cmake_build_android_arm64 o cmake_build_android_arm64_debug).

Build desktop da macOS e Linux

  1. Configura il preset predefinito per le build desktop:

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

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

Personalizzare il target di build

Personalizzazione delle build CMake

Utilizza le opzioni di CMake per controllare quali toolchain e funzionalità vengono compilate nei tuoi target. ad esempio:

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 ti consentono di indirizzare gli strumenti host dell'helper a qualsiasi installazione di Clang/GCC senza modificare CMakeLists.txt.
  • LITERT_DISABLE_KLEIDIAI mantiene riproducibili le build per computer x86 saltando KleidiAI; impostalo su OFF ogni volta che vuoi raggruppare il delegato.
  • Passa sempre -DCMAKE_BUILD_TYPE=Release (o il preset equivalente) quando hai bisogno dell'artefatto ottimizzato. In questo modo CMake utilizza -O3 -DNDEBUG per te.

Produzione di librerie fornitore di dimensioni minime

Al momento del collegamento, attiva l'eliminazione del codice non utilizzato in modo che le dimensioni delle librerie di distribuzione corrispondano a quelle di Bazel:

  • macOS: aggiungi -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,-dead_strip -dead_strip_dylibs" (e lo stesso per CMAKE_EXE_LINKER_FLAGS_RELEASE se vuoi che gli eseguibili vengano rimossi). Dopo la creazione, esegui strip -x path/to/libLiteRtDispatch_Qualcomm.dylib.
  • Linux: aggiungi -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,--gc-sections" ed esegui strip --strip-unneeded path/to/libLiteRtDispatch_Qualcomm.so (o trasformalo in un comando POST_BUILD).

Questi flag possono essere inseriti direttamente nelle voci cmake --preset … in CMakePresets.json, in modo che ogni sviluppatore del tuo team abbia la stessa configurazione.

Suggerimenti per la risoluzione dei problemi

  • Se modifichi le toolchain o le opzioni di configurazione principali, elimina la directory cmake_build* corrispondente, quindi esegui nuovamente il passaggio di configurazione.
  • Controlla CMakeCache.txt all'interno di ogni albero di build per i percorsi delle dipendenze risolti.