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)
Installa l'NDK per Android ed esporta il percorso in modo che CMake possa trovarlo:
export ANDROID_NDK_HOME=/absolute/path/to/android-ndk-r27Configurare gli strumenti Flatbuffer lato host
cmake --preset android-arm64;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)"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
Configura il preset predefinito per le build desktop:
# For Release build: cmake --preset default # For Debug build: cmake --preset default-debugCrea 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_COMPILERti consentono di indirizzare gli strumenti host dell'helper a qualsiasi installazione di Clang/GCC senza modificareCMakeLists.txt.LITERT_DISABLE_KLEIDIAImantiene riproducibili le build per computer x86 saltando KleidiAI; impostalo suOFFogni 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 -DNDEBUGper 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 perCMAKE_EXE_LINKER_FLAGS_RELEASEse vuoi che gli eseguibili vengano rimossi). Dopo la creazione, eseguistrip -x path/to/libLiteRtDispatch_Qualcomm.dylib. - Linux: aggiungi
-DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,--gc-sections"ed eseguistrip --strip-unneeded path/to/libLiteRtDispatch_Qualcomm.so(o trasformalo in un comandoPOST_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.txtall'interno di ogni albero di build per i percorsi delle dipendenze risolti.