Quelle est leur signification et puis-je les définir dans différentes valeurs?
Les architectures sont celles que vous voulez construire, les architectures valides sont celles que vous pourriez concevoir de construire avec votre base de code.
Alors peut-être que vous voulez seulement construire votre binaire pour armv7, mais le même code source compilerait bien pour armv7 et armv6. Alors VALID_ARCHS = armv6 armv7 armv7s
, mais vous définissez ARCHS = armv7s
parce que c’est tout ce que vous voulez réellement construire avec votre code.
Ou, dans Apple-ese:
ARCHS (Architectures)
Liste d'identifiants séparés par des espaces. Spécifie les architectures (ABI, modèles de processeur) auxquelles le binaire est destiné. Lorsque ce paramètre de construction spécifie plusieurs architectures, le binaire généré peut contenir un code objet pour chacune des architectures spécifiées.
et:
VALID_ARCHS (Architectures valides)
Liste d'identifiants séparés par des espaces. Spécifie les architectures pour lesquelles le binaire peut être construit. Pendant la construction, cette liste est intersectée avec la valeur du paramètre de construction ARCHS; la liste résultante spécifie les architectures sur lesquelles le binaire peut être exécuté. Si la liste d'architecture résultante est vide, la cible ne génère aucun binaire.
Source: Référence du paramètre de construction Xcode
En pratique, vous quittez VALID_ARCHS
seul et ne vous inquiétez pas de le changer, et tripotez simplement ARCHS
pour définir les architectures que vous voulez construire. Généralement, vous définissez une construction Debug sur NATIVE_Arch
, étant donné que vous voulez uniquement créer la version de débogage pour la machine sur laquelle vous allez tester/l'exécuter, Release crée pour le spectre complet des architectures que vous prévoyez de prendre en charge.
De Apple, nous savons que le Xcode binaire construit sera la liste Valid Architectures
_ intersecté avec Architectures
.
Donc, je ne pense pas que la réponse de Jeremy soit juste, comme il le dit:
Alors peut-être que vous voulez seulement construire votre binaire pour armv7s, mais le même code source serait
compile amende pour armv7 et armv6. AlorsVALID_ARCHS = armv6 armv7 armv7s
, mais vous définissez ARCHS = armv7s car c’est tout ce que vous voulez réellement construire avec votre code.
Lorsque vous définissez VALID_ARCHS = armv6 armv7 armv7s
,Et mettre ARCHS = armv7s
_, le résultat du binaire Xcode construira armv7s il ne pourrait pas être compatible avec armv6/armv7.
Et si vous voulez être compatible avec armv6/armv7/armv7s, vous devez définir VALID_ARCHS = armv6 armv7 armv7s
et ARCHS = armv6
_ De cette manière, le résultat du binaire Xcode sera armv6, et il fonctionnera sans problème tant sur armv6/armv7/armv7 que le processeur arm est compatible avec les versions antérieures.