Это руководство поможет вам настроить и собрать среду выполнения 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)
Установите Android NDK и укажите путь к нему, чтобы CMake мог его найти:
export ANDROID_NDK_HOME=/absolute/path/to/android-ndk-r27Настройка инструментов плоского буфера на стороне хоста
cmake --preset android-arm64;Настройте сборку 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)"Соберите 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.
Настройте параметры по умолчанию для сборок настольных компьютеров:
# For Release build: cmake --preset default # For Debug build: cmake --preset default-debugСоздайте 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в каждом дереве сборки, чтобы узнать пути разрешенных зависимостей.