具有每个架构标志的 CocoaPods podspec

Posted

技术标签:

【中文标题】具有每个架构标志的 CocoaPods podspec【英文标题】:CocoaPods podspec with per architecture flags 【发布时间】:2014-05-29 21:37:35 【问题描述】:

快速版本:我有一个代码库,我正在为其创建一个 Cocoapods 规范文件。它需要基于架构的不同编译器标志。这可能吗?

说明背景: 该库的文件之一包含一些 ARM NEON 内部代码。对于 armv7 和 armv7s,标志是:

s.compiler_flags = '-mfloat-abi=softfp', '-mfpu=neon', '-mcpu=cortex-a9'

最后一个标志在 arm64 上导致(完全合理的)编译错误。

Xcode 在 Build Settings 区域支持 per-architecture 标志,因此一直构建良好,直到现在需要 podspec 包装器。

有没有办法使用每个架构标志配置 CocoaPods 规范?

【问题讨论】:

【参考方案1】:

一个解决方案,我通过Can you set architecture specific Build Settings in an .xcconfig file in Xcode 4.3?找到,使用xcconfig:

# Common flags
s.compiler_flags = '-mfloat-abi=softfp', '-mfpu=neon'

# Per-arch flags
s.xcconfig =  'OTHER_CFLAGS[arch=armv7]'  => '$(inherited) -mcpu=cortex-a9' ,
               'OTHER_CFLAGS[arch=armv7s]' => '$(inherited) -mcpu=cortex-a9'

这里是 CocoaPods 的小错误,$(inherited) 标志 加倍 Pods.xcconfig 中的参数:

OTHER_CFLAGS[arch=armv7] = $(inherited) -mcpu=cortex-a9 $(inherited) -mcpu=cortex-a9
OTHER_CFLAGS[arch=armv7s] = $(inherited) -mcpu=cortex-a9 $(inherited) -mcpu=cortex-a9

我想知道是否有更规范的方式通过实际的compiler-flags 标志来做到这一点?

【讨论】:

以上是关于具有每个架构标志的 CocoaPods podspec的主要内容,如果未能解决你的问题,请参考以下文章

制作自己cocoapods库

Firebase、Fabric 和 Crashlytics,带有 -ObjC 链接器标志,没有 Cocoapods iOS

向 cocoapods 库添加标志

Cocoapods:无法设置 pod 构建设置

如何获得英特尔架构 SIMD __m128 的标志

静态 Swift 框架未能通过 CocoaPods 验证,并显示“未定义的架构符号”