Инструкции по сборке LiteRT CMake

Это руководство поможет вам настроить и собрать среду выполнения LiteRT с помощью CMake на macOS. Инструкции охватывают как кросс-компиляцию для Android (с использованием macOS и Linux в качестве хост-машин), так и нативную сборку для macOS и Linux.

Общие этапы сборки

Установите CMake 4.0.1 из: https://github.com/kitware/cmake/releases

Все параметры сборки предполагают работу из корневой директории репозитория:

cd ./litert

Сгенерированные деревья сборки находятся в папке cmake_build* . Параллельные сборки можно контролировать с помощью -j , указывая желаемое количество ядер.

Доступные варианты сборки

LiteRT поддерживает как релизные , так и отладочные варианты сборки:

Предустановка Платформа Тип сборки Выходной каталог
default Настольная ОС (macOS/Linux) Выпускать cmake_build
default-debug Настольная ОС (macOS/Linux) Отлаживать cmake_build_debug
android-arm64 Android arm64 Выпускать cmake_build_android_arm64
android-arm64-debug Android arm64 Отлаживать cmake_build_android_arm64_debug

В релизных сборках используется -O3 -DNDEBUG для оптимизированных производственных бинарных файлов. В отладочных сборках используется -O0 -g для отладки с полной информацией о символах.

Кросс-компиляция для Android (arm64)

  1. Установите Android NDK и укажите путь к нему, чтобы CMake мог его найти:

    export ANDROID_NDK_HOME=/absolute/path/to/android-ndk-r27
    
  2. Настройка инструментов плоского буфера на стороне хоста

    cmake --preset android-arm64;
    
  3. Настройте сборку LiteRT для Android, используя предоставленные предустановки, и укажите на сгенерированные инструменты FlatBuffers:

    # 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. Соберите LiteRT для Android:

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

Такие артефакты, как статические библиотеки, будут создаваться в соответствующем каталоге сборки ( cmake_build_android_arm64 или cmake_build_android_arm64_debug ).

Сборка настольных компьютеров на базе macOS и Linux.

  1. Настройте параметры по умолчанию для сборок настольных компьютеров:

    # For Release build:
    cmake --preset default
    
    # For Debug build:
    cmake --preset default-debug
    
  2. Создайте LiteRT:

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

Настройте целевую сборку.

Настройка сборок CMake

Используйте параметры CMake для управления тем, какие наборы инструментов и функции будут компилироваться в ваши целевые задачи. Например:

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 позволяют указать вспомогательным инструментам хоста любую установку Clang/GCC без редактирования CMakeLists.txt .
  • LITERT_DISABLE_KLEIDIAI обеспечивает воспроизводимость сборок для настольных систем x86, пропуская KleidiAI; установите его значение в OFF , если хотите включить делегат в сборку.
  • Всегда передавайте -DCMAKE_BUILD_TYPE=Release (или эквивалентный параметр), если вам нужен оптимизированный артефакт. Это заставит CMake использовать -O3 -DNDEBUG .

Создание библиотек поставщиков минимального размера

При компоновке включите удаление неиспользуемых библиотек, чтобы размер используемых библиотек соответствовал размеру Bazel:

  • macOS: добавьте -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,-dead_strip -dead_strip_dylibs" (и то же самое для CMAKE_EXE_LINKER_FLAGS_RELEASE , если вы хотите удалить исполняемые файлы). После сборки запустите strip -x path/to/libLiteRtDispatch_Qualcomm.dylib .
  • Linux: добавьте -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,--gc-sections" и запустите strip --strip-unneeded path/to/libLiteRtDispatch_Qualcomm.so (или сделайте это командой POST_BUILD ).

Эти флаги могут находиться непосредственно в записях cmake --preset … в файле CMakePresets.json , поэтому каждый разработчик в вашей команде получит одинаковую конфигурацию.

Советы по устранению неполадок

  • Удалите соответствующий каталог cmake_build* если вы меняете наборы инструментов или основные параметры конфигурации, а затем повторно запустите этап настройки.
  • Проверьте файл CMakeCache.txt в каждом дереве сборки, чтобы узнать пути разрешенных зависимостей.