add ios xcframework build

This commit is contained in:
blueloveTH 2024-03-23 14:48:36 +08:00
parent 0480919906
commit 957f037b8d
3 changed files with 31 additions and 13 deletions

View File

@ -146,16 +146,12 @@ jobs:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Compile Static Library
- name: Compile Frameworks
run: |
git clone https://github.com/leetal/ios-cmake --depth 1
mkdir build
cd build
cmake -G Xcode -DCMAKE_TOOLCHAIN_FILE=../ios-cmake/ios.toolchain.cmake -DPLATFORM=OS64COMBINED .. -DPK_BUILD_STATIC_LIB=ON -DPK_USE_CJSON=ON -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release
cd ..
git clone https://github.com/leetal/ios-cmake --depth 1 ~/ios-cmake
bash build_ios.sh
mkdir -p output/ios
cp -r build/Release-iphoneos/pocketpy.framework output/ios/pocketpy.framework
cp -r build/pocketpy.xcframework output/ios/pocketpy.xcframework
- uses: actions/upload-artifact@v3
with:
path: output

View File

@ -49,22 +49,26 @@ endif()
if(PK_BUILD_SHARED_LIB)
add_library(${PROJECT_NAME} SHARED ${POCKETPY_SRC})
elseif(PK_BUILD_STATIC_LIB)
add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC})
# build xcframework for iOS
if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
set(
HEADERS
${CMAKE_CURRENT_LIST_DIR}/include/pocketpy/pocketpy_c.h
${CMAKE_CURRENT_LIST_DIR}/include/pocketpy/export.h
)
add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC} ${HEADERS})
set_target_properties(${PROJECT_NAME} PROPERTIES
FRAMEWORK TRUE
FRAMEWORK_VERSION CXX
MACOSX_FRAMEWORK_IDENTIFIER dev.pocketpy
# MACOSX_FRAMEWORK_INFO_PLIST Info.plist
# "current version" in semantic format in Mach-O binary file
VERSION 1.4.3
# "compatibility version" in semantic format in Mach-O binary file
SOVERSION 1.4.3
PUBLIC_HEADER pocketpy.h
PUBLIC_HEADER "${HEADERS}"
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
)
else()
add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC})
endif()
else()
add_library(${PROJECT_NAME} SHARED ${POCKETPY_SRC})

18
build_ios.sh Normal file
View File

@ -0,0 +1,18 @@
rm -rf build
mkdir build
cd build
FLAGS="-DCMAKE_TOOLCHAIN_FILE=~/ios-cmake/ios.toolchain.cmake -DPK_BUILD_STATIC_LIB=ON -DDEPLOYMENT_TARGET=13.0"
cmake -B os64 -G Xcode -DPLATFORM=OS64 $FLAGS ..
cmake --build os64 --config Release
cmake -B simulator64 -G Xcode -DPLATFORM=SIMULATOR64 $FLAGS ..
cmake --build simulator64 --config Release
xcodebuild -create-xcframework \
-framework os64/Release-iphoneos/pocketpy.framework \
-framework simulator64/Release-iphonesimulator/pocketpy.framework \
-output pocketpy.xcframework