LiteRT CMake 빌드 안내

이 가이드를 사용하여 macOS에서 CMake로 LiteRT 런타임을 구성하고 빌드하세요. 이 안내에서는 Android 교차 컴파일 타겟 (macOS 및 Linux를 호스트 머신으로 사용)과 네이티브 macOS 및 Linux 빌드를 모두 다룹니다.

일반적인 빌드 단계

https://github.com/kitware/cmake/releases에서 CMake 4.0.1을 설치합니다.

모든 빌드 사전 설정은 저장소 루트에서 작업해야 합니다.

cd ./litert

생성된 빌드 트리는 cmake_build*에 있습니다. 병렬 빌드는 원하는 코어 수로 -j를 통해 제어할 수 있습니다.

사용 가능한 빌드 버전

LiteRT는 ReleaseDebug 빌드 버전을 모두 지원합니다.

사전 설정 플랫폼 빌드 유형 출력 디렉터리
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. 호스트 측 flatbuffer 도구 구성

    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. Android용 LiteRT 빌드:

    # 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를 사용하면 CMakeLists.txt를 수정하지 않고도 도우미 호스트 도구를 Clang/GCC 설치에 지정할 수 있습니다.
  • LITERT_DISABLE_KLEIDIAI는 KleidiAI를 건너뛰어 x86 데스크톱 빌드를 재현 가능하게 유지합니다. 대리자를 번들로 묶으려면 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 명령어로 만듦).

이러한 플래그는 CMakePresets.jsoncmake --preset … 항목에 직접 있을 수 있으므로 팀의 모든 개발자가 동일한 구성을 갖게 됩니다.

문제 해결 도움말

  • 툴체인이나 주요 구성 옵션을 변경하는 경우 해당 cmake_build* 디렉터리를 삭제한 후 구성 단계를 다시 실행합니다.
  • 각 빌드 트리 내에서 CMakeCache.txt를 검사하여 해결된 종속 항목 경로를 확인합니다.