Respuestas:
Las arquitecturas son las que desea construir, las arquitecturas válidas son las que podría concebir construir con su código base.
Entonces, tal vez solo desee construir su binario para armv7s, pero el mismo código fuente se compilaría bien para armv7 y armv6. Entonces VALID_ARCHS = armv6 armv7 armv7s
, pero lo configura ARCHS = armv7s
porque eso es todo lo que realmente quiere construir con su código.
O, en Apple-ese:
ARCOS (Arquitecturas)
Lista de identificadores separados por espacios. Especifica las arquitecturas (ABI, modelos de procesador) a las que se dirige el binario. Cuando esta configuración de construcción especifica más de una arquitectura, el binario generado puede contener código de objeto para cada una de las arquitecturas especificadas.
y:
VALID_ARCHS (arquitecturas válidas)
Lista de identificadores separados por espacios. Especifica las arquitecturas para las que se puede construir el binario. Durante la construcción, esta lista se cruza con el valor de la configuración de construcción ARCHS; la lista resultante especifica las arquitecturas en las que se puede ejecutar el binario. Si la lista de arquitectura resultante está vacía, el destino no genera ningún binario.
Fuente: Referencia de configuración de compilación de Xcode
En la práctica, lo deja en VALID_ARCHS
paz y no se preocupa por cambiarlo, y simplemente juega ARCHS
para configurar las arquitecturas que desea construir. Por lo general, establece una compilación de depuración en solo NATIVE_ARCH
, ya que solo desea compilar la versión de depuración para la máquina en la que lo probará / ejecutará, y compilaciones de lanzamiento para el espectro completo de arquitecturas que planea admitir.
Por el documento de Apple, sabemos que el Xcode binario que se generará es la lista Valid Architectures
con la que se cruza Architectures
.
Entonces, no creo que la respuesta de Jeremy sea correcta, como él dice:
Entonces, tal vez solo desee construir su binario para armv7s, pero el mismo código fuente se
compilaría bien para armv7 y armv6. EntoncesVALID_ARCHS = armv6 armv7 armv7s
, pero configura ARCHS = armv7s porque eso es todo lo que realmente quiere construir con su código.
Cuando configura VALID_ARCHS = armv6 armv7 armv7s
y configura ARCHS = armv7s
, el resultado de la construcción binaria de Xcode es armv7s, no podría ser compatible con armv6 / armv7.
Y si desea que sea compatible con armv6 / armv7 / armv7s, debe configurar VALID_ARCHS = armv6 armv7 armv7s
y ARCHS = armv6
. De esta manera, el resultado del Xcode binario se construirá es armv6, y puede funcionar bien tanto en armv6 / armv7 / armv7s como el procesador arm es compatible con versiones anteriores .