Ios 什么';这两者之间的区别是什么;“建筑”;及;“有效架构”;在Xcode构建设置中?
它们的含义是什么?我可以将它们设置为不同的值吗?体系结构是您想要构建的体系结构,有效的体系结构是您可以设想使用代码库构建的体系结构 因此,您可能只想为armv7s构建二进制代码,但同样的源代码可以为armv7和armv6编译。所以Ios 什么';这两者之间的区别是什么;“建筑”;及;“有效架构”;在Xcode构建设置中?,ios,xcode,xcode4.5,Ios,Xcode,Xcode4.5,它们的含义是什么?我可以将它们设置为不同的值吗?体系结构是您想要构建的体系结构,有效的体系结构是您可以设想使用代码库构建的体系结构 因此,您可能只想为armv7s构建二进制代码,但同样的源代码可以为armv7和armv6编译。所以VALID\u ARCHS=armv6 armv7 armv7s,但是您设置了ARCHS=armv7s,因为这就是您实际想要用代码构建的全部内容 或者,在苹果ese中: 拱门(建筑) 标识符的空格分隔列表。指定二进制文件所针对的体系结构(ABI、处理器型号)。当此生成设
VALID\u ARCHS=armv6 armv7 armv7s
,但是您设置了ARCHS=armv7s
,因为这就是您实际想要用代码构建的全部内容
或者,在苹果ese中:
拱门(建筑)
标识符的空格分隔列表。指定二进制文件所针对的体系结构(ABI、处理器型号)。当此生成设置指定多个体系结构时,生成的二进制文件可能包含每个指定体系结构的目标代码
以及:
有效架构(有效架构)
标识符的空格分隔列表。指定可为其生成二进制文件的体系结构。在构建过程中,此列表与ARCHS build设置的值相交;结果列表指定二进制文件可以运行的体系结构。如果生成的架构列表为空,则目标不会生成二进制文件
资料来源:
实际上,您可以将
VALID_ARCHS
放在一边,不必担心更改它,只需摆弄ARCHS
即可设置您想要构建的体系结构。通常,您只需将调试版本设置为原生版本,因为您只想为将要测试/运行它的机器构建调试版本,并为您计划支持的所有体系结构发布版本。来自Apple文档,我们知道,将要构建的二进制Xcode是与体系结构
相交的有效体系结构列表
因此,我认为杰里米的回答不对,正如他所说:
因此,您可能只想为armv7s构建二进制文件,但相同的源代码将
为armv7和armv6编译良好。所以VALID\u ARCHS=armv6 armv7 armv7s
,但是
ARCHS=armv7s,因为这就是您实际想要用代码构建的全部内容
当您设置VALID\u ARCHS=armv6 armv7 armv7s
并设置ARCHS=armv7s
时,二进制Xcode生成的结果是armv7s,它无法与armv6/armv7兼容
如果你想与armv6/armv7/armv7s兼容,你必须设置VALID\u ARCHS=armv6 armv7 armv7s
和ARCHS=armv6
。这样,二进制Xcode生成的结果就是armv6,并且它可以在两个armv6/armv7/armv7s上正常运行,因为arm处理器是向后兼容的。@DanMoore“结果架构列表”在生成时在内存中完成。@onmyway133大多数情况下,您不需要有效的\u arch。如果您只为某些体系结构编写内联asm,则可能会更改有效的_arch,以反映您的代码不再适用于除这些体系结构之外的任何体系结构。不过,在很大程度上,这只是Xcode给您的一个提示,指示它可以为哪些体系结构构建,您可以从中为您的Arch选择。他是对的:“因为这就是您真正想要用代码构建的全部内容。”