他們是什麼意思,我可以設置他們在不同的值?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