Instrucciones de compilación de LiteRT CMake

Usa esta guía para configurar y compilar el tiempo de ejecución de LiteRT con CMake en macOS. Las instrucciones abarcan los destinos de compilación cruzada de Android (con macOS y Linux como máquina host) y las compilaciones nativas de macOS y Linux.

Pasos de compilación comunes

Instala CMake 4.0.1 desde https://github.com/kitware/cmake/releases

Todos los ajustes predeterminados de compilación esperan que trabajes desde la raíz del repositorio:

cd ./litert

Los árboles de compilación generados se encuentran en cmake_build*. Las compilaciones paralelas se pueden controlar a través de -j con el recuento de núcleos deseado.

Tipos de compilación disponibles

LiteRT admite las variantes de compilación Release y Debug:

Ajuste predeterminado Plataforma Tipo de compilación Directorio de salida
default Computadoras (macOS/Linux) Versión cmake_build
default-debug Computadoras (macOS/Linux) Depurar cmake_build_debug
android-arm64 Android arm64 Versión cmake_build_android_arm64
android-arm64-debug Android arm64 Depurar cmake_build_android_arm64_debug

Las compilaciones de versión usan -O3 -DNDEBUG para los archivos binarios de producción optimizados. Las compilaciones de depuración usan -O0 -g para la depuración con información de símbolos completa.

Compilación cruzada de Android (arm64)

  1. Instala el NDK de Android y exporta la ruta de acceso para que CMake pueda encontrarlo:

    export ANDROID_NDK_HOME=/absolute/path/to/android-ndk-r27
    
  2. Configura herramientas de FlatBuffer del host

    cmake --preset android-arm64;
    
  3. Configura la compilación de Android de LiteRT con el ajuste predeterminado proporcionado y apunta a las herramientas de FlatBuffers generadas:

    # 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. Compila LiteRT para Android:

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

Los artefactos, como las bibliotecas estáticas, se emitirán en el directorio de compilación correspondiente (cmake_build_android_arm64 o cmake_build_android_arm64_debug).

Compilación para computadoras de escritorio desde macOS y Linux

  1. Configura el ajuste predeterminado para las compilaciones de escritorio:

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

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

Personaliza tu destino de compilación

Cómo personalizar compilaciones de CMake

Usa las opciones de CMake para controlar qué cadenas de herramientas y funciones se compilan en tus destinos. P. ej.:

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 te permiten dirigir las herramientas del host auxiliar a cualquier instalación de Clang/GCC sin editar CMakeLists.txt.
  • LITERT_DISABLE_KLEIDIAI mantiene reproducibles las compilaciones de escritorio x86 omitiendo KleidiAI; configúralo en OFF cuando quieras incluir el delegado.
  • Siempre pasa -DCMAKE_BUILD_TYPE=Release (o el ajuste predeterminado equivalente) cuando necesites el artefacto optimizado. Esto hace que CMake use -O3 -DNDEBUG por ti.

Cómo producir bibliotecas de proveedores de tamaño mínimo

En el momento de la vinculación, habilita la eliminación de código no utilizado para que las bibliotecas de envío coincidan con el tamaño de Bazel:

  • macOS: Agrega -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,-dead_strip -dead_strip_dylibs" (y lo mismo para CMAKE_EXE_LINKER_FLAGS_RELEASE si quieres que se quiten los ejecutables). Después de la compilación, ejecuta strip -x path/to/libLiteRtDispatch_Qualcomm.dylib.
  • Linux: Agrega -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,--gc-sections" y ejecuta strip --strip-unneeded path/to/libLiteRtDispatch_Qualcomm.so (o conviértelo en un comando POST_BUILD).

Estas marcas pueden residir directamente en las entradas cmake --preset … de CMakePresets.json, de modo que todos los desarrolladores de tu equipo obtengan la misma configuración.

Sugerencias para solucionar problemas

  • Borra el directorio cmake_build* correspondiente si cambias las cadenas de herramientas o las opciones de configuración principales y, luego, vuelve a ejecutar el paso de configuración.
  • Inspecciona CMakeCache.txt dentro de cada árbol de compilación para ver las rutas de dependencia resueltas.