In dieser Anleitung erfahren Sie, wie Sie die LiteRT-Laufzeit mit CMake unter macOS konfigurieren und erstellen. Die Anleitung umfasst sowohl Android-Cross-Compilierungsziele (mit macOS und Linux als Hostcomputer) als auch native macOS- und Linux-Builds.
Häufige Build-Schritte
Installieren Sie CMake 4.0.1 von https://github.com/kitware/cmake/releases.
Bei allen Build-Voreinstellungen wird davon ausgegangen, dass Sie vom Stammverzeichnis des Repositorys aus arbeiten:
cd ./litert
Die generierten Build-Bäume befinden sich unter cmake_build*. Parallele Builds können über -j mit der gewünschten Anzahl von Kernen gesteuert werden.
Verfügbare Build-Varianten
LiteRT unterstützt sowohl Release- als auch Debug-Build-Varianten:
| Voreinstellung | Plattform | Build-Typ | Ausgabeverzeichnis |
|---|---|---|---|
default |
Desktop (macOS/Linux) | Release | cmake_build |
default-debug |
Desktop (macOS/Linux) | Fehlerbehebung | cmake_build_debug |
android-arm64 |
Android arm64 | Release | cmake_build_android_arm64 |
android-arm64-debug |
Android arm64 | Fehlerbehebung | cmake_build_android_arm64_debug |
Bei Release-Builds wird -O3 -DNDEBUG für optimierte Produktions-Binärdateien verwendet.
Debug-Builds verwenden -O0 -g für das Debugging mit vollständigen Symbolinformationen.
Cross-Kompilierung für Android (arm64)
Installieren Sie das Android NDK und exportieren Sie den Pfad, damit CMake es finden kann:
export ANDROID_NDK_HOME=/absolute/path/to/android-ndk-r27Hostseitige Flatbuffer-Tools konfigurieren
cmake --preset android-arm64;Konfigurieren Sie den LiteRT-Android-Build mit dem bereitgestellten Preset und verweisen Sie auf die generierten FlatBuffers-Tools:
# 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)"LiteRT für Android erstellen:
# For Release build: cmake --build cmake_build_android_arm64 -j # For Debug build: cmake --build cmake_build_android_arm64_debug -j
Artefakte wie statische Bibliotheken werden im entsprechenden Build-Verzeichnis (cmake_build_android_arm64 oder cmake_build_android_arm64_debug) ausgegeben.
Desktop-Builds unter macOS und Linux erstellen
Standardvoreinstellung für Desktop-Builds konfigurieren:
# For Release build: cmake --preset default # For Debug build: cmake --preset default-debugLiteRT erstellen:
# For Release build: cmake --build cmake_build -j # For Debug build: cmake --build cmake_build_debug -j
Build-Ziel anpassen
CMake-Builds anpassen
Mit CMake-Optionen können Sie steuern, welche Toolchains und Funktionen in Ihre Ziele kompiliert werden. Beispiel:
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
- Mit
LITERT_HOST_C_COMPILER/LITERT_HOST_CXX_COMPILERkönnen Sie die Helper-Host-Tools auf eine beliebige Clang-/GCC-Installation verweisen, ohneCMakeLists.txtbearbeiten zu müssen. LITERT_DISABLE_KLEIDIAIsorgt dafür, dass x86-Desktop-Builds reproduzierbar sind, indem KleidiAI übersprungen wird. Setzen Sie den Wert aufOFF, wenn Sie den Delegate bündeln möchten.- Übergeben Sie immer
-DCMAKE_BUILD_TYPE=Release(oder die entsprechende Voreinstellung), wenn Sie das optimierte Artefakt benötigen. Dadurch wird-O3 -DNDEBUGvon CMake verwendet.
Anbieterbibliotheken mit minimaler Größe erstellen
Aktivieren Sie beim Linken das Entfernen von nicht verwendetem Code, damit die Dispatch-Bibliotheken der Größe von Bazel entsprechen:
- macOS: Fügen Sie
-DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,-dead_strip -dead_strip_dylibs"hinzu (und dasselbe fürCMAKE_EXE_LINKER_FLAGS_RELEASE, wenn Sie die ausführbaren Dateien entfernen möchten). Führen Sie nach dem Erstellenstrip -x path/to/libLiteRtDispatch_Qualcomm.dylibaus. - Linux: Fügen Sie
-DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,--gc-sections"hinzu und führen Siestrip --strip-unneeded path/to/libLiteRtDispatch_Qualcomm.soaus (oder machen Sie daraus einenPOST_BUILD-Befehl).
Diese Flags können direkt in cmake --preset …-Einträgen in CMakePresets.json enthalten sein, sodass jeder Entwickler in Ihrem Team dieselbe Konfiguration erhält.
Tipps zur Fehlerbehebung
- Löschen Sie das entsprechende
cmake_build*-Verzeichnis, wenn Sie Toolchains oder wichtige Konfigurationsoptionen ändern, und führen Sie den Konfigurationsschritt noch einmal aus. - Prüfen Sie
CMakeCache.txtin jedem Build-Baum auf aufgelöste Abhängigkeitspfade.