Was bedeuten sie und kann ich sie in verschiedenen Werten setzen?Was ist der Unterschied zwischen "Architekturen" und "gültigen Architekturen" in Xcode Build Settings?
Antwort
Architekturen sind die, die Sie erstellen möchten, gültige Architekturen sind diejenigen, die Sie mit Ihrer Codebasis erstellen könnten.
Vielleicht möchten Sie nur Ihre Binärdatei für armv7s erstellen, aber der gleiche Quellcode würde für armv7 und armv6 gut kompilieren. Also VALID_ARCHS = armv6 armv7 armv7s
, aber Sie setzen ARCHS = armv7s
, denn das ist alles, was Sie eigentlich wollen mit Ihrem Code zu bauen.
Oder Apple-ese:
ARCHS (Architekturen)
Leerzeichen getrennte Liste von Kennungen. Gibt die Architekturen (ABIs, Prozessormodelle) an, auf die die Binärdatei ausgerichtet ist. Wenn diese Buildeinstellung mehr als eine Architektur angibt, kann die generierte Binärdatei Objektcode für jede der angegebenen Architekturen enthalten.
und:
VALID_ARCHS (Gültig Architectures)
Leerzeichen getrennte Liste von Kennungen. Gibt die Architekturen an, für die die Binärdatei erstellt werden kann. Während des Builds wird diese Liste mit dem Wert der Build-Einstellung von ARCHS 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 Sie verlassen VALID_ARCHS
allein und keine Sorge um ihn zu verändern, und Geige nur mit ARCHS
die Architekturen setzen Sie bauen wollen. In der Regel setzen Sie einen Debug-Build auf NATIVE_ARCH
, da Sie nur die Debug-Version für die Maschine erstellen möchten, auf der Sie sie testen und ausführen, und Release-Builds für das gesamte Spektrum an Architekturen, die Sie unterstützen möchten.
Aus dem Apple-Dokument wissen wir, dass der binäre Xcode erstellt wird, ist die Liste Valid Architectures
durchschnitten mit .
Also, ich glaube nicht, Jeremy Antwort richtig ist, wie er sagt:
Also vielleicht nur Sie Ihre Binärdatei für armv7s bauen, aber die gleiche Quellcode würde
kompiliert gut für ARMv7 und Armv6. AlsoVALID_ARCHS = armv6 armv7 armv7s
, aber Sie setzen ARCHS = Armv7s, denn das ist alles, was Sie eigentlich mit Ihrem Code erstellen möchten.
Wenn Sie VALID_ARCHS = armv6 armv7 armv7s
gesetzt und eingestellt ARCHS = armv7s
, ist das Ergebnis der binären Xcode bauen armv7s, es nicht mit ARMv6/ARMv7 kompatibel könnte. Wenn Sie mit armv6/armv7/armv7s kompatibel sind, müssen Sie VALID_ARCHS = armv6 armv7 armv7s
und ARCHS = armv6
einstellen.Auf diese Weise wird das Ergebnis von binärem Xcode armv6 sein, und es kann gut auf armv6/armv7/armv7 laufen, da der Armprozessor abwärtskompatibel ist.
Er hatte recht: "Denn das ist alles **, das du mit deinem Code wirklich aufbauen willst." – Laszlo
Weiß jemand, wo diese "resultierende Architekturliste" gefunden werden kann ????????? – DanMoore
@DanMoore Die "resultierende Architekturliste" wird zum Zeitpunkt der Erstellung im Speicher abgelegt. – Saltymule
@ JeremyW.Sherman scheint VALID_ARCHS nutzlos? – onmyway133