Qual é o significado deles e posso defini-los em valores diferentes?
Qual é o significado deles e posso defini-los em valores diferentes?
Respostas:
Arquiteturas são aquelas que você deseja construir, arquiteturas válidas são aquelas que você poderia conceber construir com sua base de código.
Então, talvez você só queira construir seu binário para armv7s, mas o mesmo código fonte compilaria bem para armv7 e armv6. Então VALID_ARCHS = armv6 armv7 armv7s
, mas você define ARCHS = armv7s
porque é tudo o que você realmente deseja construir com seu código.
Ou, em Apple-ese:
ARCHS (arquiteturas)
Lista de identificadores separados por espaço. Especifica as arquiteturas (ABIs, modelos de processador) às quais o binário é direcionado. Quando esta configuração de construção especifica mais de uma arquitetura, o binário gerado pode conter código-objeto para cada uma das arquiteturas especificadas.
e:
VALID_ARCHS (arquiteturas válidas)
Lista de identificadores separados por espaço. Especifica as arquiteturas para as quais o binário pode ser construído. Durante a construção, esta lista é cruzada com o valor da configuração de construção ARCHS; a lista resultante especifica as arquiteturas nas quais o binário pode ser executado. Se a lista de arquitetura resultante estiver vazia, o destino não gerará nenhum binário.
Fonte: Referência de configuração do Xcode Build
Na prática, você sai VALID_ARCHS
sozinho e não se preocupa em alterá-lo, apenas mexe com ARCHS
a configuração das arquiteturas que deseja construir. Normalmente, você define uma compilação de depuração para apenas NATIVE_ARCH
, uma vez que deseja apenas compilar a versão de depuração para a máquina em que irá testá-la / executá-la, e as compilações de lançamento para todo o espectro de arquiteturas que você planeja suportar.
Pelo documento da Apple, sabemos que o Xcode binário que construirá é a lista Valid Architectures
com a qual se cruzou Architectures
.
Então, não acho que a resposta de Jeremy esteja certa, como ele diz:
Então, talvez você só queira construir seu binário para armv7s, mas o mesmo código fonte
compilaria bem para armv7 e armv6. EntãoVALID_ARCHS = armv6 armv7 armv7s
, mas você define ARCHS = armv7s porque isso é tudo que você realmente deseja construir com seu código.
Quando você define VALID_ARCHS = armv6 armv7 armv7s
, e define ARCHS = armv7s
, o resultado da construção do Xcode binário é armv7s, não é compatível com armv6 / armv7.
E se você quiser ser compatível com armv6 / armv7 / armv7s, você deve definir VALID_ARCHS = armv6 armv7 armv7s
e ARCHS = armv6
. Desta forma, o resultado da construção do Xcode binário é armv6, e pode funcionar bem em ambos armv6 / armv7 / armv7s, pois o processador arm é compatível com versões anteriores .