ใช้คู่มือนี้เพื่อกำหนดค่าและสร้างรันไทม์ 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กำหนดค่าเครื่องมือ Flatbuffer ฝั่งโฮสต์
cmake --preset android-arm64;กำหนดค่าบิลด์ Android ของ LiteRT โดยใช้ค่าที่กำหนดล่วงหน้าที่ให้ไว้และชี้ไปยัง เครื่องมือ 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 เพื่อควบคุมว่าควรกำหนดค่า Toolchain และฟีเจอร์ใดในเป้าหมาย เช่น
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.txtLITERT_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*ที่เกี่ยวข้องหากเปลี่ยน Toolchain หรือ ตัวเลือกการกำหนดค่าหลัก จากนั้นเรียกใช้ขั้นตอนการกำหนดค่าอีกครั้ง - ตรวจสอบ
CMakeCache.txtภายในแต่ละทรีของบิลด์เพื่อดูเส้นทางการอ้างอิงที่แก้ไขแล้ว