如何构建包含 Mac Catalyst 的 Fat Framework?

2024-01-08

如何构建一个包含构建 Mac Catalyst 应用程序所需架构的胖框架?


苹果引入了一个(未记录的?)新目标:x86_64-apple-ios13.0-macabi

如何构建此目标取决于您的框架构建环境。

1)XC框架

如果您的框架是 Xcode 项目:

  • 在 Xcode 中选择目标
  • 选择“常规”选项卡
  • Under "Deployment Info", tick the "Mac" checkbox: enter image description here
  • build

2) 外部构建

如果您在 Xcode 之外构建框架,例如一个 C lib,而不是为 x86_64 和 iphonesimulator 构建,而是为新目标 x86_64-apple-ios13.0-macabi 和 macosx 构建。

使用 make 的 C 库示例:

MIN_IOS_VERSION="10.0"
LIB_NAME= "theNameOfYourLib"

# The build function
build()
{
ARCH=$1
TARGET=$2
HOST=$3
SDK=$4
SDK_PATH=`xcrun -sdk ${SDK} --show-sdk-path`

export PREFIX=build/${ARCH}
export CFLAGS="-arch ${ARCH} -isysroot ${SDK_PATH} -miphoneos-version-min=${MIN_IOS_VERSION} -std=c99 -target ${TARGET}"
export LDFLAGS="-arch ${ARCH}"
export CC="$(xcrun --sdk ${SDK} -f clang) -arch ${ARCH} -isysroot ${SDK_PATH}"

PKG_CONFIG_ALLOW_CROSS=1 PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig ./configure --host=${HOST} --prefix=$PREFIX

make
make install
}

# Build for all required architectures

build "armv7" "armv7-apple-ios" "arm-apple-darwin" "iphoneos" # MIN_IOS_VERSION must be one of arm7 supported ones to. Else remove this line.
build "arm64" "aarch64-apple-ios" "arm-apple-darwin" "iphoneos"
# build "x86_64" "x86_64-apple-ios" "x86_64-apple-darwin" "iphonesimulator" #obsolete due to x86_64-apple-ios13.0-macabi
build "x86_64" "x86_64-apple-ios13.0-macabi" "x86_64-apple-darwin" "macosx"
build "i386" "i386-apple-ios" "i386-apple-darwin" "iphonesimulator" # same as arm7:  MIN_IOS_VERSION must be one of arm7 supported ones.

# Now find all the artefacts created above (e.g. build/arm64/lib/${LIB_NAME}.a,  build/x86_64/lib/${LIB_NAME}.a ...) and merge them together to a fat lib using lipo

OUTPUT_DIR="fatLib"
lipo -create -output $OUTPUT_DIR/lib/${LIB_NAME}.a build/x86_64/lib/${LIB_NAME}.a build/arm64/lib/${LIB_NAME}.a build/armv7/lib/${LIB_NAME}.a build/i386/lib/${LIB_NAME}.a

# You may also need the header files
cp -R build/armv7/include/* $OUTPUT_DIR/include/

Note:您必须/不能添加切片x86_64-apple-ios and x86_64-apple-ios13.0-macabi到胖库。两者都是 x86_64。仅使用其中一个x86_64-apple-ios13.0-macabi.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何构建包含 Mac Catalyst 的 Fat Framework? 的相关文章

随机推荐

  • numpy 数组行专业和列专业

    我无法理解如何numpy存储其数据 考虑以下 gt gt gt import numpy as np gt gt gt a np ndarray shape 2 3 order F gt gt gt for i in xrange 6 a
  • 如何用Java将wav文件分成1秒的片段?

    之前我有个问题 Java读取wav文件 https stackoverflow com questions 5210147 reading wav file in java 首先 我想用 Java 读取一个 wav 文件并将其字节处理到一个
  • DataTables 服务器端分页

    我有工作 Spring REST 应用程序与客户端分页 默认由 DataTables 和一切正常 现在我需要将其更改为服务器端分页 我遇到了问题 因为不知道如何从数据表中获取客户端想要查看的页码信息 我在 DT 手册中找不到任何有用的内容
  • 对数组进行排序以避免相邻项具有重复属性

    我有一系列对象 每个对象都有一个颜色属性 可以是 红色 蓝色 黄色 绿色 橙色 或 紫色 数组中有 20 30 个对象 因此颜色重复 我的目标是对数组进行排序 以便没有颜色彼此相邻 颜色的分布并不完全均匀 但很接近 这是我到目前为止所拥有的
  • vim 过滤器和 stdout/stderr

    当我使用 通过过滤器运行文件的内容 过滤器失败 它返回除 0 之外的另一个代码 并向 stderr 打印一条错误消息 我的文件被此错误消息替换 如果过滤器返回指示错误和 或忽略过滤器程序写入 stderr 的输出的状态代码 是否有办法告诉
  • 使用 VSTO 对 Excel 插件进行单元测试

    我一直在尝试测试我的插件但没有成功 即使在查看了各种来源之后MSDN https blogs msdn microsoft com varsha 2010 08 17 writing automated test cases for vst
  • WCF 方法被调用两次

    我有一个将数据返回到桌面应用程序的网络服务 我遇到的问题是 当网络服务返回少量数据时 一切正常 但当数据量很大时 它会抛出以下异常 System Net WebException 基础连接已关闭 接收时发生意外错误 当我调试 Web 服务时
  • 以编程方式检查 DLL/EXE 文件是否使用authenticode 签名的最佳方法是什么?

    我不想验证证书 我想在构建服务器上使用它来检查所有文件并列出我们可能忘记签名的文件 怎么样使用Get AuthenticodeSignature http technet microsoft com en us library dd3476
  • 我想在 SQL 中使用递归返回新列?

    我有一个表格 其列如下所示 Employee ID Manager ID E068 E067 E071 E067 E229 E069 E248 E144 E226 E223 E236 E241 E066 E001 E067 E001 E14
  • 在控制台应用程序中人为填充 HttpContext 对象

    我正在为 log4net 编写一个包装器库 该库应该能够捕获上下文信息 例如查询字符串 cookie 表单字段等 我从控制台应用程序调用这个包装类 而不是 TDD 类 有没有办法在控制台应用程序中填充 HttpContext 对象 如下所示
  • 如何安装 clang 头文件?

    我在 MacOS 上安装了 clang 在 usr bin clang 中 我认为 Mac 上默认安装了 clang 但是 当我尝试在脚本中包含 clang 头文件时 它说找不到它们 Example cpp 1 10 fatal error
  • 如何开发具有交错列和自调整大小单元格的自定义 UICollectionViewLayout?

    我正在开发一个已经在 Android 上开发的应用程序的 iOS 版本 该应用程序具有以下 2 列自调整大小 宽度固定但高度可变 单元格的网格 在 Android 版本中实现这一点很容易 因为 Google 提供了StaggeredGrid
  • 共享库如何在混合 64 位/32 位系统中工作?

    早上好 在 64 位 RedHat 机器上 我们必须编译并运行 32 位应用程序 同时 我设法编译了所需的 gcc 版本 4 0 3 和 32 位所需的所有运行时库 并将 LD LIBRARY PATH 设置为指向 32 位版本 但现在在剩
  • 评估 VS Code 扩展中的环境变量

    我正在 VS Code 中开发一个扩展 以添加对 OpenSCAD 基于脚本的 3D 建模程序 的语言支持 目前 我一直在研究一种从 VS Code 在 OpenSCAD 中打开 预览文件的方法 我已经能够使用自己的预览管理器成功完成此操作
  • 汇编 NASM 中的随机数生成

    我正在从事汇编 nasm 的大学项目 唯一的问题是我无法生成 162 到 278 之间的偶数随机数 我尝试了很多算法 但似乎无法限制范围内的数字 是否有一个小技巧或调整来获得范围内所需的数字 目的是在屏幕上随机显示一个水果 主要是贪吃蛇游戏
  • React中的apexchart方法

    我正在使用 apexcharts 并做出反应 我需要隐藏一系列 但我不知道如何在我的代码中实现这些方法 这个想法是使用 data4 进行一些计算并将其显示在自定义工具提示上 如何隐藏图表中的数据4但仍在后台使用数据 我的代码是这样的 imp
  • 一根衬垫可压平嵌套对象

    我需要展平嵌套对象 需要一个内衬 不确定此过程的正确术语是什么 我可以使用纯Javascript或库 我特别喜欢下划线 我有 a 2 b c 3 而且我要 a 2 c 3 我试过了 var obj fred 2 jill 4 obby jo
  • 如何让 SCons 替换已安装文本文件中的文本

    我希望能够在从 scons 安装一些 python 脚本时替换模板变量 SOFTWARE VERSION scons已经有这样的功能了吗 如果没有 那么挂钩 scons 安装过程的最佳方法是什么 以便我可以在安装过程中执行此操作 你可以使用
  • Eclipse Spring Boot - 在 TransactionAutoConfiguration 和 Neo4jDataAutoConfiguration 之间检测到自动配置周期

    从昨天开始 我在正在开发的 Spring Boot 应用程序 1 5 2 RELEASE 上遇到了一个非常奇怪的错误 在 Eclipse 中运行项目时 我开始遇到以下异常 从命令行运行它时 一切正常 但在开发和调试时我仍然需要从 Eclip
  • 如何构建包含 Mac Catalyst 的 Fat Framework?

    如何构建一个包含构建 Mac Catalyst 应用程序所需架构的胖框架 苹果引入了一个 未记录的 新目标 x86 64 apple ios13 0 macabi 如何构建此目标取决于您的框架构建环境 1 XC框架 如果您的框架是 Xcod