文章

CMakePresets构建iOS及macOS配置

示例CMakeLists配置如下:

cmake_minimum_required(VERSION 3.10) project(QuantumNative VERSION 0.0.1 LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 17) set(CXX_STANDARD_REQUIRED) add_library(QuantumNative SHARED quantum.cc quantum.h test.cc test.h) if (APPLE) message("configure for Apple") 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) endif() set_target_properties(QuantumNative PROPERTIES PUBLIC_HEADER quantum.h OUTPUT_NAME "QuantumNative") target_compile_definitions(QuantumNative PUBLIC DART_SHARED_LIB)

示例CMakePresets配置如下:

{ "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": {} }, { "name": "macOS", "displayName": "macOS Config", "description": "macOS build using Xcode generator", "generator": "Xcode", "binaryDir": "${sourceDir}/output/macos", "cacheVariables": { "CMAKE_OSX_DEPLOYMENT_TARGET": { "type": "STRING", "value": "10.14" } }, "environment": {} } ], "buildPresets": [ { "name": "iOS", "configurePreset": "iOS" }, { "name": "macOS", "configurePreset": "macOS" } ] }

构建iOS

# 配置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 --config Release -- -sdk iphonesimulator # cmake安装 cmake --install output/ios --config Release --prefix `pwd`/install
本文由作者按照 CC BY 4.0 进行授权