编译ios下的framework
cmake_minimum_required(VERSION 3.10)
project(QuantumNative VERSION 0.0.1 LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 17)
set(CXX_STANDARD_REQUIRED)
include(FetchContent)
FetchContent_Declare(simple
GIT_REPOSITORY https://github.com/wangfenjin/simple.git
GIT_TAG v0.2.2)
FetchContent_MakeAvailable(simple)
#FetchContent_GetProperties(simple)
#if(NOT simple_POPULATED)
# # Fetch the content using previously declared details
# FetchContent_Populate(simple)
# add_subdirectory(${simple_SOURCE_DIR} ${simple_BINARY_DIR})
#endif()
message("simple2 ${simple_SOURCE_DIR} ${simple_BINARY_DIR}")
add_library(QuantumNative SHARED
quantum.cc
quantum.h
# database/database.cpp
test.cc
test.h
)
target_link_libraries(QuantumNative PRIVATE simple)
target_link_libraries(QuantumNative PRIVATE SQLite3)
if (APPLE)
message("configure for Apple")
# set(MACOSX_FRAMEWORK_IDENTIFIER "direct.multiverse.QuantumNative")
# set(MACOSX_FRAMEWORK_NAME "QuantumNative")
# set(MACOSX_FRAMEWORK_BUNDLE_VERSION "1.0.0")
# set(MACOSX_FRAMEWORK_SHORT_VERSION_STRING "1.0.0")
# set(RESOURCE_FILES
# ${CMAKE_BINARY_DIR}/cppjieba/src/cppjieba/dict/jieba.dict.utf8)
message("cppjiebadict ${RESOURCE_FILES}")
set_target_properties(QuantumNative PROPERTIES
FRAMEWORK TRUE
FRAMEWORK_VERSION A
MACOSX_FRAMEWORK_IDENTIFIER direct.multiverse.QuantumNative
VERSION 0.0.1
SOVERSION 0.0.1
PUBLIC_HEADER "quantum.h"
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
MACOSX_BUNDLE TRUE
# RESOURCE "${RESOURCE_FILES}"
)
endif()
set_target_properties(QuantumNative PROPERTIES
PUBLIC_HEADER quantum.h
OUTPUT_NAME "QuantumNative"
)
target_compile_definitions(QuantumNative PUBLIC DART_SHARED_LIB)
iOS cmake-presets配置
{
"version": 3,
"cmakeMinimumRequired": {
"major": 3,
"minor": 22,
"patch": 0
},
"configurePresets": [
{
"name": "iOS",
"displayName": "iOS Config",
"description": "iOS build using Xcode generator",
"generator": "Xcode",
"binaryDir": "${sourceDir}/output/ios",
"cacheVariables": {
"CMAKE_SYSTEM_NAME": {
"type": "STRING",
"value": "iOS"
},
"CMAKE_IOS_INSTALL_COMBINED": {
"type": "BOOL",
"value": "YES"
},
"CMAKE_OSX_ARCHITECTURES": {
"type": "STRING",
"value": "arm64;arm64;arm64;arm64;x86_64"
},
"CMAKE_OSX_DEPLOYMENT_TARGET": {
"type": "STRING",
"value": "14.0"
},
"CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH": "NO",
"CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED": "NO",
"CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED": "NO"
},
"environment": {}
}
],
"buildPresets": [
{
"name": "iOS",
"configurePreset": "iOS"
}
]
}
执行构建
## 构建iOS
```bash
# 配置cmake工程
cmake --preset Default
# 使用xcodebuild构建
xcodebuild -project target/QuantumIOS.xcodeproj -scheme QuantumNative -destination generic/platform=iOS -configuration Release build
# 真机构建构建
cmake --build --preset iOS --config Release
# iOS模拟器构建
cmake --build --preset iOS -sdk iphonesimulator
# cmake安装
cmake --install output/ios --config Release --prefix install