mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-01 01:10:34 +08:00
chore: macOS build scripts (#15936)
This commit is contained in:
@@ -10,3 +10,6 @@ end_of_line = lf
|
||||
[*.json]
|
||||
|
||||
indent_size = 4
|
||||
|
||||
[*.makefile]
|
||||
indent_style = tab
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -475,6 +475,7 @@ Thumbs.db
|
||||
# build & install
|
||||
build
|
||||
install
|
||||
install-*
|
||||
|
||||
# pnpm cache
|
||||
.pnpm-store
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# This file is no longer used in the official build process,
|
||||
# but is kept for reference and potential future use.
|
||||
if (BUILD_XCFRAMEWORK)
|
||||
set(XCFRAMEWORK_DIR "${CMAKE_BINARY_DIR}/xcframework")
|
||||
file(MAKE_DIRECTORY ${XCFRAMEWORK_DIR})
|
||||
|
||||
@@ -32,10 +32,10 @@ set_target_properties(MaaCore PROPERTIES PUBLIC_HEADER "${MaaCore_PUBLIC_HEADERS
|
||||
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${maa_src})
|
||||
|
||||
# 收集resource/tasks目录下的所有文件作为资源
|
||||
file(GLOB_RECURSE TASKS_RESOURCE_FILES
|
||||
file(GLOB_RECURSE TASKS_RESOURCE_FILES
|
||||
"${PROJECT_SOURCE_DIR}/resource/tasks/*"
|
||||
)
|
||||
file(GLOB_RECURSE GLOBAL_TASKS_RESOURCE_FILES
|
||||
file(GLOB_RECURSE GLOBAL_TASKS_RESOURCE_FILES
|
||||
"${PROJECT_SOURCE_DIR}/resource/global/*/resource/tasks/*"
|
||||
)
|
||||
|
||||
@@ -44,8 +44,8 @@ target_sources(MaaCore PRIVATE ${TASKS_RESOURCE_FILES})
|
||||
target_sources(MaaCore PRIVATE ${GLOBAL_TASKS_RESOURCE_FILES})
|
||||
|
||||
# 使用source_group创建正确的文件夹结构
|
||||
source_group(TREE "${PROJECT_SOURCE_DIR}/resource/tasks"
|
||||
PREFIX "Resource Files/tasks/CN"
|
||||
source_group(TREE "${PROJECT_SOURCE_DIR}/resource/tasks"
|
||||
PREFIX "Resource Files/tasks/CN"
|
||||
FILES ${TASKS_RESOURCE_FILES}
|
||||
)
|
||||
|
||||
@@ -53,20 +53,20 @@ source_group(TREE "${PROJECT_SOURCE_DIR}/resource/tasks"
|
||||
foreach(GLOBAL_FILE ${GLOBAL_TASKS_RESOURCE_FILES})
|
||||
# 从完整路径中提取A部分:${PROJECT_SOURCE_DIR}/resource/global/A/resource/tasks/xxx
|
||||
string(REGEX REPLACE "${PROJECT_SOURCE_DIR}/resource/global/([^/]+)/resource/tasks/.*" "\\1" FOLDER_NAME "${GLOBAL_FILE}")
|
||||
|
||||
|
||||
# 获取相对于resource/tasks的文件路径部分
|
||||
string(REGEX REPLACE "${PROJECT_SOURCE_DIR}/resource/global/[^/]+/resource/tasks/(.*)" "\\1" REL_FILE_PATH "${GLOBAL_FILE}")
|
||||
|
||||
|
||||
# 获取文件的目录部分
|
||||
get_filename_component(FILE_DIR "${REL_FILE_PATH}" DIRECTORY)
|
||||
|
||||
|
||||
# 构建VS中的显示路径
|
||||
if(FILE_DIR)
|
||||
set(VS_GROUP "Resource Files/tasks/${FOLDER_NAME}/${FILE_DIR}")
|
||||
else()
|
||||
set(VS_GROUP "Resource Files/tasks/${FOLDER_NAME}")
|
||||
endif()
|
||||
|
||||
|
||||
# 设置单个文件的source_group
|
||||
source_group("${VS_GROUP}" FILES "${GLOBAL_FILE}")
|
||||
endforeach()
|
||||
@@ -78,6 +78,8 @@ endif()
|
||||
|
||||
if(APPLE)
|
||||
set_target_properties(MaaCore PROPERTIES INSTALL_RPATH "@loader_path/")
|
||||
set_target_properties(MaaCore PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
set_target_properties(MaaUtils PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
elseif(UNIX)
|
||||
set_target_properties(MaaCore PROPERTIES INSTALL_RPATH "$ORIGIN/")
|
||||
endif()
|
||||
|
||||
@@ -32,25 +32,6 @@ else
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm -rf build
|
||||
mkdir build
|
||||
for LIB_NAME in $(ls install-"${arch}" | grep .dylib); do
|
||||
if [[ "${maa_debug}" -eq 1 ]]; then
|
||||
mv install-"${arch}"/$LIB_NAME build/$LIB_NAME
|
||||
else
|
||||
lipo -create install-arm64/$LIB_NAME install-x86_64/$LIB_NAME -output build/$LIB_NAME
|
||||
fi
|
||||
done
|
||||
cp build-"${arch}"/compile_commands.json build
|
||||
make -f tools/xcframework.makefile MAA_DEBUG=${maa_debug} -j$(sysctl -n hw.ncpu) all
|
||||
|
||||
pushd build
|
||||
xcodebuild -create-xcframework -library libMaaCore.dylib -headers ../include -output MaaCore.xcframework
|
||||
xcodebuild -create-xcframework -library libMaaUtils.dylib -output MaaUtils.xcframework
|
||||
xcodebuild -create-xcframework -library libfastdeploy_ppocr.dylib -output fastdeploy_ppocr.xcframework
|
||||
xcodebuild -create-xcframework -library libonnxruntime.*.dylib -output ONNXRuntime.xcframework
|
||||
xcodebuild -create-xcframework -library libopencv*.dylib -output OpenCV.xcframework
|
||||
rm -rf *.dylib
|
||||
popd
|
||||
|
||||
rm -rf install-arm64 install-x86_64
|
||||
popd
|
||||
|
||||
54
tools/xcframework.makefile
Normal file
54
tools/xcframework.makefile
Normal file
@@ -0,0 +1,54 @@
|
||||
ARCH ?= $(shell uname -m)
|
||||
MAA_DEBUG ?= 1
|
||||
|
||||
BUILD_DIR := build
|
||||
|
||||
XCFRAMEWORKS := $(BUILD_DIR)/MaaCore.xcframework \
|
||||
$(BUILD_DIR)/MaaUtils.xcframework \
|
||||
$(BUILD_DIR)/fastdeploy_ppocr.xcframework \
|
||||
$(BUILD_DIR)/ONNXRuntime.xcframework \
|
||||
$(BUILD_DIR)/OpenCV.xcframework
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
all: $(XCFRAMEWORKS) $(BUILD_DIR)/compile_commands.json
|
||||
|
||||
$(BUILD_DIR):
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
|
||||
$(BUILD_DIR)/compile_commands.json: build-$(ARCH)/compile_commands.json | $(BUILD_DIR)
|
||||
@cp $< $@
|
||||
|
||||
ifeq ($(MAA_DEBUG), 0)
|
||||
SRC_DIRS := install-arm64 install-x86_64
|
||||
else
|
||||
SRC_DIRS := install-$(ARCH)
|
||||
endif
|
||||
|
||||
_get_and_check = $(if $(filter-out 1,$(words $(wildcard $(1)/$(2)))),\
|
||||
$(error Ambiguous dylibs: $(wildcard $(1)/$(2))),\
|
||||
$(wildcard $(1)/$(2)))
|
||||
|
||||
get_srcs = $(foreach dir,$(SRC_DIRS),$(call _get_and_check,$(dir),$(1)))
|
||||
|
||||
$(BUILD_DIR)/MaaCore.xcframework: $(call get_srcs,libMaaCore.dylib)
|
||||
$(BUILD_DIR)/MaaUtils.xcframework: $(call get_srcs,libMaaUtils.dylib)
|
||||
$(BUILD_DIR)/fastdeploy_ppocr.xcframework: $(call get_srcs,libfastdeploy_ppocr.dylib)
|
||||
$(BUILD_DIR)/ONNXRuntime.xcframework: $(call get_srcs,libonnxruntime*.dylib)
|
||||
$(BUILD_DIR)/OpenCV.xcframework: $(call get_srcs,libopencv*.dylib)
|
||||
|
||||
$(BUILD_DIR)/MaaCore.xcframework: EXTRA_ARGS := -headers include
|
||||
|
||||
$(XCFRAMEWORKS): | $(BUILD_DIR)
|
||||
@rm -rf $@
|
||||
@TMP_LIB="$(BUILD_DIR)/$$(basename "$<")"; \
|
||||
if [ "$(MAA_DEBUG)" -eq 0 ]; then \
|
||||
lipo -create $^ -output "$$TMP_LIB"; \
|
||||
else \
|
||||
cp "$<" "$$TMP_LIB"; \
|
||||
fi; \
|
||||
xcodebuild -create-xcframework -library "$$TMP_LIB" $(EXTRA_ARGS) -output $@; \
|
||||
rm -f "$$TMP_LIB"
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILD_DIR)
|
||||
Reference in New Issue
Block a user