Antworten:
Architekturen sind diejenigen, die Sie erstellen möchten, gültige Architekturen sind diejenigen, die Sie sich vorstellen können, mit Ihrer Codebasis zu erstellen.
Vielleicht möchten Sie Ihre Binärdatei nur für armv7s erstellen, aber der gleiche Quellcode lässt sich gut für armv7 und armv6 kompilieren. Also VALID_ARCHS = armv6 armv7 armv7s
, aber Sie setzen, ARCHS = armv7s
weil das alles ist, was Sie tatsächlich mit Ihrem Code erstellen möchten .
Oder in Apple-ese:
ARCHS (Architekturen)
Durch Leerzeichen getrennte Liste von Bezeichnern. Gibt die Architekturen (ABIs, Prozessormodelle) an, auf die die Binärdatei ausgerichtet ist. Wenn diese Build-Einstellung mehr als eine Architektur angibt, kann die generierte Binärdatei Objektcode für jede der angegebenen Architekturen enthalten.
und:
VALID_ARCHS (Gültige Architekturen)
Durch Leerzeichen getrennte Liste von Bezeichnern. Gibt die Architekturen an, für die die Binärdatei erstellt werden kann. Während des Builds wird diese Liste mit dem Wert der ARCHS-Buildeinstellung geschnitten. Die resultierende Liste gibt die Architekturen an, auf denen die Binärdatei ausgeführt werden kann. Wenn die resultierende Architekturliste leer ist, generiert das Ziel keine Binärdatei.
Quelle: Xcode Build Setting Reference
In der Praxis lassen Sie es in VALID_ARCHS
Ruhe und sorgen sich nicht darum, es zu ändern. Sie müssen nur ARCHS
die Architekturen festlegen, die Sie erstellen möchten. In der Regel setzen Sie einen Debug-Build auf "Just" NATIVE_ARCH
, da Sie nur die Debug-Version für den Computer erstellen möchten, auf dem Sie ihn testen / ausführen möchten, und Release-Builds für das gesamte Spektrum der Architekturen, die Sie unterstützen möchten.
Aus dem Apple-Dokument wissen wir, dass der binäre Xcode die Liste ist, mit der Valid Architectures
geschnitten wird Architectures
.
Ich glaube nicht, dass Jeremys Antwort richtig ist, wie er sagt:
Vielleicht möchten Sie Ihre Binärdatei nur für armv7s erstellen, aber der gleiche Quellcode lässt sich
gut für armv7 und armv6 kompilieren. AlsoVALID_ARCHS = armv6 armv7 armv7s
, aber Sie setzen ARCHS = armv7s, weil das alles ist, was Sie tatsächlich mit Ihrem Code erstellen möchten.
Wenn Sie festlegen VALID_ARCHS = armv6 armv7 armv7s
und festlegen ARCHS = armv7s
, wird das Ergebnis des binären Xcodes armv7s erstellt. Es kann nicht mit armv6 / armv7 kompatibel sein.
Und wenn Sie mit armv6 / armv7 / armv7s kompatibel sein möchten, müssen Sie einstellen VALID_ARCHS = armv6 armv7 armv7s
und ARCHS = armv6
. Auf diese Weise wird das Ergebnis des binären Xcodes armv6 erstellt, und es kann auf beiden armv6 / armv7 / armv7s einwandfrei ausgeführt werden, da der Armprozessor abwärtskompatibel ist .