Domanda

Ho un progetto per iPhone configurato per compilare per ARMv6 e ARMv7 architetture. E ho bisogno di escludere qualche codice da compilare per l'architettura ARMv6 perché provoca incidente di esecuzione su un dispositivo (ad eccezione di istruzioni cattivo).

C'è un definiscono per i percorsi di compilazione ARMv6 / ARMv7 (come "_DEBUG")?

È stato utile?

Soluzione

Prima di tutto, non è necessario per impedire loro di compilazione , è necessario evitare che vengano eseguiti. L'incidente è in fase di esecuzione, dopo tutto, non il tempo di compilazione.

Detto questo, il modo più semplice per farlo è quello di avere due percorsi di codice, e compilare l'apposita sezione basata su architettura:

#if defined _ARM_ARCH_7
// your armv7 implementation goes here
#elif defined _ARM_ARCH_6
// your armv6 implementation goes here
#elif defined __i386__
// a simulator implementation could go here, if you had one
#else
#error Unknown Architecture!
#endif

Altri suggerimenti

Una soluzione potrebbe essere quella di riunire tutte le fonti ARMv6 solo in un sottoprogetto e compilarli come una libreria statica, quindi collegare quella libreria per l'applicazione di grasso.

Si può anche specificare flag di compilazione aggiuntivi per file sorgente in Xcode, ma io non sono a conoscenza con la sintassi o che altro sarebbe necessario per ripristinare essenzialmente una bandiera già emesso (ad esempio, la bandiera per specificare la compilazione sotto ARMv7.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top