blueloveTH 1 год назад
Родитель
Сommit
0480919906
2 измененных файлов с 19 добавлено и 3 удалено
  1. 2 2
      .github/workflows/main.yml
  2. 17 1
      CMakeLists.txt

+ 2 - 2
.github/workflows/main.yml

@@ -151,11 +151,11 @@ jobs:
           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=OS64 .. -DPK_BUILD_STATIC_LIB=ON -DPK_USE_CJSON=ON -DCMAKE_BUILD_TYPE=Release
+          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 ..
           mkdir -p output/ios
-          cp build/Release-iphoneos/libpocketpy.a output/ios/libpocketpy.a
+          cp -r build/Release-iphoneos/pocketpy.framework output/ios/pocketpy.framework
       - uses: actions/upload-artifact@v3
         with:
           path: output

+ 17 - 1
CMakeLists.txt

@@ -50,6 +50,22 @@ 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_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
+            XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
+        )
+    endif()
 else()
     add_library(${PROJECT_NAME} SHARED ${POCKETPY_SRC})
     set(PROJECT_EXE_NAME main)
@@ -67,7 +83,7 @@ if(PK_USE_CJSON)
     target_link_libraries(${PROJECT_NAME} PRIVATE $<BUILD_INTERFACE:cjson>)
 endif()
 
-option(PK_INSTALL "Generate the install target" ON)
+option(PK_INSTALL "Generate the install target" OFF)
 if (PK_INSTALL)
     install(
         TARGETS ${PROJECT_NAME}