如何使用 xcodebuild 构建特定架构?
Posted
技术标签:
【中文标题】如何使用 xcodebuild 构建特定架构?【英文标题】:How can I build a specific architecture using xcodebuild? 【发布时间】:2011-05-27 11:23:37 【问题描述】:我有依赖于 32-bit
指针的遗留代码,并希望使用 xCodeBuild
从 command line
构建该代码。由于某种原因,这不起作用。这是我使用的命令:
xcodebuild -configuration Debug -arch i386
-workspace MyProject.xcworkspace -scheme MyLib
这是我得到的输出
[BEROR]No architectures to compile for
(ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
显然,它正在尝试构建 x86_64
代码并且失败得很惨,因为我只在 xCode 项目设置中从 VALID_ARCHS
启用了 i386
。
有没有办法让它明白我不想要 64-bit
库?
【问题讨论】:
【参考方案1】:如果您希望xcodebuild
使用ARCHS
参数,则必须将ONLY_ACTIVE_ARCH
设置为NO
。通过传递这些参数,您可以强制使用正确的架构。
xcodebuild ARCHS=i386 ONLY_ACTIVE_ARCH=NO -configuration Debug -workspace MyProject.xcworkspace -scheme MyLib
详情请见this reference。
【讨论】:
根据提供的参考资料看起来像使用 ONLY_ACTIVE_ARCH=YES 和 CURRENT_ARCH=i386 应该适用于我想做的事情,但 CURRENT_ARCH (或具有相同含义的 NATIVE_ARCH )但显然这两个变量不能被覆盖(并且似乎没有从文档中暗示它)。提议的方法确实有效(实际上,一旦您了解活动架构是构建系统的架构而不是您在 Xcode 中选择的架构,它就有意义了),但可能为该定义选择更好的词会有所帮助。谢谢! 你可以使用xcodebuild VALID_ARCHS=i386 CURRENT_ARCH=i386 ONLY_ACTIVE_ARCH=YES ....
只需添加 ONLY_ACTIVE_ARCH=NO 就可以了
对于 64 位模拟器/操作系统:ARCHS='x86_64' VALID_ARCHS='x86_64'
Geoptima 在这里做什么? ONLY_ACTIVE_ARCH=NO
答案是正确的,你的评论没用【参考方案2】:
xcodebuild ONLY_ACTIVE_ARCH
xcodebuild ONLY_ACTIVE_ARCH...
//or
Build Settings -> Build Active Architecture Only -> ONLY_ACTIVE_ARCH
YES
- 为连接的设备构建具有单一架构的二进制文件
NO
- 为特定的-arch
(valid architectures
aka VALID_ARCHS
) 构建二进制文件(如果已指定)或在其他情况下为所有架构构建二进制文件
建议使用Yes
进行调试(它可以节省构建时间),使用否进行发布构建。
注意:在模拟器上运行是安全的
要检查版本,请使用lipo -info
[About]
【讨论】:
以上是关于如何使用 xcodebuild 构建特定架构?的主要内容,如果未能解决你的问题,请参考以下文章
使用 xcodebuild 从命令行构建 Cocoa 应用程序后,如何运行它?
如何将旧版构建系统与 Xcode 10 的“xcodebuild”一起使用?