他们是什么意思,我可以设置他们在不同的值?Xcode构建设置中的“体系结构”和“有效体系结构”有什么区别?
回答
体系结构是你想要建立的体系结构,有效的体系结构是你可以设想用你的代码库构建的体系结构。所以也许你只想为armv7s构建你的二进制文件,但是相同的源代码可以很好的编译armv7和armv6。所以VALID_ARCHS = armv6 armv7 armv7s
,但你设置ARCHS = armv7s
,因为这是你真的想要与您的代码构建。
或者说,在苹果公司ESE:
ARCHS(架构)的标识符
空格分隔的列表。指定二进制文件所针对的体系结构(ABI,处理器模型)。当此构建设置指定多个体系结构时,生成的二进制文件可能包含每个指定体系结构的目标代码。
和:
VALID_ARCHS(有效架构)标识符
空间分隔的列表。指定可以构建二进制文件的体系结构。在构建过程中,此列表与ARCHS构建设置的值相交;结果列表指定了二进制文件可以运行的体系结构。如果生成的体系结构列表为空,则目标不会生成二进制文件。
来源:Xcode Build Setting Reference
在实践中,你离开VALID_ARCHS
独自不用担心改变它,只是拨弄ARCHS
设置要构建的架构。通常情况下,您将Debug版本设置为NATIVE_ARCH
,因为您只想为要测试/运行的计算机构建调试版本,而Release版本则针对您计划支持的全部架构进行构建。
从Apple文档中,我们知道二进制Xcode将生成的列表是Valid Architectures
与Architectures
相交。
所以,我不认为杰里米的答案是正确的,他说:
因此,也许你只是想建立您的armv7s二进制文件,但相同的源代码将
编译罚款的ARMv7和armv6。所以VALID_ARCHS = armv6 armv7 armv7s
,但你设置 ARCHS = armv7s,因为这是你真正想用你的代码构建的。
当您设置VALID_ARCHS = armv6 armv7 armv7s
,并设置ARCHS = armv7s
,二进制的Xcode的结果将建设是armv7s,它不能用的ARMv6/ARMv7的兼容。
如果你想兼容armv6/armv7/armv7s,你必须设置VALID_ARCHS = armv6 armv7 armv7s
和ARCHS = armv6
。这样,二进制Xcode的结果就是armv6,它可以在armv6/armv7/armv7s上正常运行,因为arm处理器是向后兼容的。
他是对的:“因为这就是你想用你的代码构建**的全部**。” – Laszlo
- 1. 代码构建和体系结构有什么区别?
- 2. 究竟构建体系结构,有效的构建体系结构意味着什么?
- 3. LDAP v2和v3在体系结构方面有什么区别
- 4. 干净和n层体系结构有什么区别?
- 5. c#设置体系结构
- 6. '组件体系结构'和'模块化体系结构'之间的区别
- 7. Xcode的“体系结构”和“有效体系结构”能否排除armv6设备下载应用程序?
- 8. NUMA体系结构的有效使用
- 9. VHDL结构体系结构和clk'event
- 10. Selenium RC体系结构和Selenium WebDriver体系结构差异
- 11. Azure体系结构设计
- 12. SOA设计体系结构
- 13. 构建XML请求的体系结构?
- 14. 构建XMLRPC.framework:错误的体系结构?
- 15. ValueInjecter体系结构建议
- 16. ASP.NET N层/ DDD体系结构和Window服务软件体系结构之间有区别吗?
- 17. MVC体系结构
- 18. Graphql体系结构
- 19. Rails体系结构?
- 20. mongodb体系结构
- 21. Firebug体系结构
- 22. CakePHP体系结构
- 23. Elasticsearch体系结构
- 24. Android:Manager和SystemService体系结构
- 25. 体系结构和Microsoft.AspNet.Providers
- 26. iphone,xcode,有效的体系结构重要性
- 27. 用户级别和OOP体系结构
- 28. 网站结构/体系结构
- 29. 术语信息体系结构和数据库有什么区别?
- 30. 三层体系结构与三层服务器体系结构
有没有人知道这个“产生的架构列表”可以找到????????? – DanMoore
@DanMoore“生成的架构列表”在构建时在内存中完成。 – Saltymule
@ JeremyW.Sherman看来VALID_ARCHS是没用的? – onmyway133