이 가이드를 사용하여 macOS에서 CMake로 LiteRT 런타임을 구성하고 빌드하세요. 이 안내에서는 Android 교차 컴파일 타겟 (macOS 및 Linux를 호스트 머신으로 사용)과 네이티브 macOS 및 Linux 빌드를 모두 다룹니다.
일반적인 빌드 단계
https://github.com/kitware/cmake/releases에서 CMake 4.0.1을 설치합니다.
모든 빌드 사전 설정은 저장소 루트에서 작업해야 합니다.
cd ./litert
생성된 빌드 트리는 cmake_build*에 있습니다. 병렬 빌드는 원하는 코어 수로 -j를 통해 제어할 수 있습니다.
사용 가능한 빌드 버전
LiteRT는 Release 및 Debug 빌드 버전을 모두 지원합니다.
| 사전 설정 | 플랫폼 | 빌드 유형 | 출력 디렉터리 |
|---|---|---|---|
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호스트 측 flatbuffer 도구 구성
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)"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에서 데스크톱 빌드
데스크톱 빌드의 기본 사전 설정을 구성합니다.
# For Release build: cmake --preset default # For Debug build: cmake --preset default-debugLiteRT 빌드:
# 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.json의 cmake --preset … 항목에 직접 있을 수 있으므로 팀의 모든 개발자가 동일한 구성을 갖게 됩니다.
문제 해결 도움말
- 툴체인이나 주요 구성 옵션을 변경하는 경우 해당
cmake_build*디렉터리를 삭제한 후 구성 단계를 다시 실행합니다. - 각 빌드 트리 내에서
CMakeCache.txt를 검사하여 해결된 종속 항목 경로를 확인합니다.