Quelle est leur signification et puis-je les définir dans différentes valeurs?
Réponses
Trop de publicités?Les Architectures sont ceux que vous voulez construire, valide les architectures sont ceux que l'on avait pu concevoir un bâtiment avec votre base de code.
Alors peut-être que vous ne voulez construire votre binaire pour armv7s, mais le même code source de dresser amende pour armv7 et armv6. Donc, VALID_ARCHS = armv6 armv7 armv7s
, mais vous définissez ARCHS = armv7s
car c'est tout ce vous avez réellement envie de construire avec votre code.
Ou, dans Apple-ese:
ARCHITECTURES (Architectures)
Séparées par un espace liste d'identifiants. Spécifie les architectures (ABIs, processeur modèles) pour qui le binaire est ciblée. Lorsque ce paramètre de construction indique plus d'une architecture de génération, les binaires peuvent contenir de code objet pour chacun des spécifié architectures.
et:
VALID_ARCHS (Valable Architectures)
Séparées par un espace liste d'identifiants. Spécifie les architectures pour lesquelles le binaire peut être construit. Lors de la compilation, cette liste est croisé avec la valeur de ARCHS paramètre de construction; la liste indique les architectures les binaires peut s'exécuter sur. Si l'architecture qui en résulte liste est vide, la cible génère pas de binaire.
Source: Xcode Paramètre De Construction De Référence
Dans la pratique, vous laissez VALID_ARCHS
seul et ne vous inquiétez pas à propos de le changer, et juste tripoter ARCHS
pour définir les architectures que vous voulez construire. En règle générale, vous définissez une version de Débogage juste NATIVE_ARCH
, puisque vous ne voulez construire la version de débogage pour la machine que vous allez tester, de course, de marche, et de Libérer construit pour l'éventail complet des architectures de vous plan à l'appui.
Apple document,nous savons que le binaire Xcode va construire est la liste Valid Architectures
ont Architectures
.
Donc ,je ne pense pas que Jeremy la réponse est juste, comme il dit:
So maybe you only want to build your binary for armv7s, but the same source code would
compile fine for armv7 and armv6. So `VALID_ARCHS = armv6 armv7 armv7s`, but you set
ARCHS = armv7s because that's all you actually want to build with your code.
Lorsque vous définissez VALID_ARCHS = armv6 armv7 armv7s
,et définissez ARCHS = armv7s
,le résultat binaire de Xcode va construire est armv7s,il ne pouvait pas compatible avec armv6/armv7.
Et si vous voulez compatible avec armv6/armv7/armv7s,vous devez définir VALID_ARCHS = armv6 armv7 armv7s
et ARCHS = armv6
.De cette façon , le résultat binaire de Xcode va construire est armv6, et il peut fonctionner correctement sur les deux armv6/armv7/armv7s comme processeur arm est rétro-compatible.