From 14e9d7e0ad4512e67ecbcd6ff2238abe1d258161 Mon Sep 17 00:00:00 2001 From: Weiyou Wang <44151844+Alan-Charred@users.noreply.github.com> Date: Mon, 22 Dec 2025 14:19:35 +1100 Subject: [PATCH] =?UTF-8?q?chore(ci):=20=E6=9B=B4=E6=96=B0=20macos.cmake?= =?UTF-8?q?=20(#15173)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmake/macos.cmake | 82 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 65 insertions(+), 17 deletions(-) diff --git a/cmake/macos.cmake b/cmake/macos.cmake index 197eb2fdfd..70479561d9 100644 --- a/cmake/macos.cmake +++ b/cmake/macos.cmake @@ -1,33 +1,81 @@ if (BUILD_XCFRAMEWORK) - add_custom_command(OUTPUT MaaCore.xcframework - COMMAND rm -rf MaaCore.xcframework - COMMAND xcodebuild -create-xcframework -library libMaaCore.dylib -headers ${PROJECT_SOURCE_DIR}/include -output MaaCore.xcframework + set(XCFRAMEWORK_DIR "${CMAKE_BINARY_DIR}/xcframework") + file(MAKE_DIRECTORY ${XCFRAMEWORK_DIR}) + + # Macro to find a unique library file + macro(find_unique_library lib_name glob_pattern output_var) + file(GLOB _libs CONFIGURE_DEPENDS "${MAADEPS_DIR}/runtime/${MAADEPS_TRIPLET}/${glob_pattern}") + if(_libs) + list(LENGTH _libs _cnt) + if(_cnt EQUAL 1) + list(GET _libs 0 ${output_var}) + message(STATUS "Found ${lib_name}: ${${output_var}}") + else() + message(FATAL_ERROR "Ambiguous ${lib_name} dylibs: ${_libs}") + endif() + else() + message(FATAL_ERROR "${lib_name} library not found in ${MAADEPS_DIR}/runtime/${MAADEPS_TRIPLET}/") + endif() + endmacro() + + add_custom_command(OUTPUT ${XCFRAMEWORK_DIR}/MaaCore.xcframework + COMMAND ${CMAKE_COMMAND} -E rm -rf "${XCFRAMEWORK_DIR}/MaaCore.xcframework" + COMMAND xcodebuild -create-xcframework + -library $ + -headers ${PROJECT_SOURCE_DIR}/include + -output MaaCore.xcframework DEPENDS MaaCore + WORKING_DIRECTORY ${XCFRAMEWORK_DIR} + COMMENT "Generating MaaCore.xcframework" ) - add_custom_command(OUTPUT MaaUtils.xcframework - COMMAND rm -rf MaaUtils.xcframework - COMMAND xcodebuild -create-xcframework -library libMaaUtils.dylib -output MaaUtils.xcframework + add_custom_command(OUTPUT ${XCFRAMEWORK_DIR}/MaaUtils.xcframework + COMMAND ${CMAKE_COMMAND} -E rm -rf "${XCFRAMEWORK_DIR}/MaaUtils.xcframework" + COMMAND xcodebuild -create-xcframework + -library $ + -output MaaUtils.xcframework DEPENDS MaaUtils + WORKING_DIRECTORY ${XCFRAMEWORK_DIR} + COMMENT "Generating MaaUtils.xcframework" ) - add_custom_command(OUTPUT OpenCV.xcframework - COMMAND rm -rf OpenCV.xcframework - COMMAND xcodebuild -create-xcframework -library "${MAADEPS_DIR}/runtime/${MAADEPS_TRIPLET}/libopencv_world4.408.dylib" -output OpenCV.xcframework + find_unique_library("OpenCV" "libopencv_world*.dylib" OPENCV_LIB) + add_custom_command(OUTPUT ${XCFRAMEWORK_DIR}/OpenCV.xcframework + COMMAND ${CMAKE_COMMAND} -E rm -rf "${XCFRAMEWORK_DIR}/OpenCV.xcframework" + COMMAND xcodebuild -create-xcframework + -library "${OPENCV_LIB}" + -output OpenCV.xcframework + WORKING_DIRECTORY ${XCFRAMEWORK_DIR} + COMMENT "Generating OpenCV.xcframework" ) - add_custom_command(OUTPUT ONNXRuntime.xcframework - COMMAND rm -rf ONNXRuntime.xcframework - COMMAND xcodebuild -create-xcframework -library "${MAADEPS_DIR}/runtime/${MAADEPS_TRIPLET}/libonnxruntime.1.18.0.dylib" -output ONNXRuntime.xcframework + find_unique_library("ONNXRuntime" "libonnxruntime*.dylib" ONNXRUNTIME_LIB) + add_custom_command(OUTPUT ${XCFRAMEWORK_DIR}/ONNXRuntime.xcframework + COMMAND ${CMAKE_COMMAND} -E rm -rf "${XCFRAMEWORK_DIR}/ONNXRuntime.xcframework" + COMMAND xcodebuild -create-xcframework + -library "${ONNXRUNTIME_LIB}" + -output ONNXRuntime.xcframework + WORKING_DIRECTORY ${XCFRAMEWORK_DIR} + COMMENT "Generating ONNXRuntime.xcframework" ) - add_custom_command(OUTPUT fastdeploy_ppocr.xcframework - COMMAND rm -rf fastdeploy_ppocr.xcframework - COMMAND xcodebuild -create-xcframework -library "${MAADEPS_DIR}/runtime/${MAADEPS_TRIPLET}/libfastdeploy_ppocr.dylib" -output fastdeploy_ppocr.xcframework + add_custom_command(OUTPUT ${XCFRAMEWORK_DIR}/fastdeploy_ppocr.xcframework + COMMAND ${CMAKE_COMMAND} -E rm -rf "${XCFRAMEWORK_DIR}/fastdeploy_ppocr.xcframework" + COMMAND xcodebuild -create-xcframework + -library "${MAADEPS_DIR}/runtime/${MAADEPS_TRIPLET}/libfastdeploy_ppocr.dylib" + -output fastdeploy_ppocr.xcframework + WORKING_DIRECTORY ${XCFRAMEWORK_DIR} + COMMENT "Generating fastdeploy_ppocr.xcframework" ) add_custom_target(MaaXCFramework ALL - DEPENDS MaaCore MaaCore.xcframework MaaUtils MaaUtils.xcframework OpenCV.xcframework ONNXRuntime.xcframework fastdeploy_ppocr.xcframework + DEPENDS + MaaCore + ${XCFRAMEWORK_DIR}/MaaCore.xcframework + MaaUtils + ${XCFRAMEWORK_DIR}/MaaUtils.xcframework + ${XCFRAMEWORK_DIR}/OpenCV.xcframework + ${XCFRAMEWORK_DIR}/ONNXRuntime.xcframework + ${XCFRAMEWORK_DIR}/fastdeploy_ppocr.xcframework ) endif (BUILD_XCFRAMEWORK) -