Risposte:
Le architetture sono quelle che vuoi costruire, le architetture valide sono quelle che potresti concepire di costruire con la tua base di codice.
Quindi forse vuoi solo costruire il tuo binario per armv7s, ma lo stesso codice sorgente si compilerebbe bene per armv7 e armv6. Quindi VALID_ARCHS = armv6 armv7 armv7s
, ma imposti ARCHS = armv7s
perché è tutto ciò che vuoi effettivamente costruire con il tuo codice.
Oppure, in Apple-ese:
ARCHI (Architetture)
Elenco di identificatori separati da spazi. Specifica le architetture (ABI, modelli di processore) a cui è destinato il binario. Quando questa impostazione di compilazione specifica più di un'architettura, il binario generato può contenere codice oggetto per ciascuna delle architetture specificate.
e:
VALID_ARCHS (architetture valide)
Elenco di identificatori separati da spazi. Specifica le architetture per le quali è possibile creare il file binario. Durante la compilazione, questo elenco viene intersecato con il valore dell'impostazione di compilazione ARCHS; l'elenco risultante specifica le architetture su cui può essere eseguito il binario. Se l'elenco dell'architettura risultante è vuoto, la destinazione non genera alcun file binario.
Fonte: riferimento alle impostazioni di compilazione Xcode
In pratica, te ne vai VALID_ARCHS
da solo e non ti preoccupare di cambiarlo, e basta armeggiare ARCHS
per impostare le architetture che vuoi costruire. In genere, si imposta una build di debug su just NATIVE_ARCH
, dal momento che si desidera compilare solo la versione di debug per la macchina su cui verrà testata / eseguita e build di rilascio per l'intero spettro di architetture che si prevede di supportare.
Dal documento Apple, sappiamo che il codice binario che verrà creato da Xcode è l'elenco Valid Architectures
intersecato Architectures
.
Quindi, non penso che la risposta di Jeremy sia giusta, come dice:
Quindi forse vuoi solo costruire il tuo binario per armv7s, ma lo stesso codice sorgente si
compilerebbe bene per armv7 e armv6. QuindiVALID_ARCHS = armv6 armv7 armv7s
, ma imposti ARCHS = armv7s perché è tutto ciò che vuoi effettivamente costruire con il tuo codice.
Quando si imposta VALID_ARCHS = armv6 armv7 armv7s
e si imposta ARCHS = armv7s
, il risultato della creazione di Xcode binario è armv7s , non potrebbe essere compatibile con armv6 / armv7.
E se vuoi essere compatibile con armv6 / armv7 / armv7s , devi impostare VALID_ARCHS = armv6 armv7 armv7s
e ARCHS = armv6
. In questo modo, il risultato di Xcode binario sarà armv6, e può funzionare bene su entrambi armv6 / armv7 / armv7s poiché il processore arm è retrocompatibile .