2011-12-01 10 views
8

Includo una libreria di terze parti (origini) con la mia libreria statica. È inteso solo per il dispositivo (poiché include alcune routine di assemblaggio ARM) e non desidero crearlo per il simulatore (voglio solo che la mia app si compili in modo da poter testare la GUI).Compilare file diversi per dispositivo/simulatore in XCode

  • La creazione di un altro target per il simulatore non è un'opzione in quanto i miei progetti fanno riferimento alla mia libreria come dipendenza e sarebbe un incubo da mantenere.
  • L'aggiunta di #if (TARGET_OS_IPHONE) per quei file non è un'opzione, poiché queste non sono le mie fonti originali e mi piacerebbe aggiornarle facilmente per gli aggiornamenti (ci sono più di 200 file e non li ho modificati tutti loro)

sto cercando un modo (simile a #if (TARGET_OS_IPHONE) in file di origine) che funzionerà dall'IDE stesso (così posso escludere un file dal processo di costruzione attuale sulla base di la mia architettura di destinazione). L'unica cosa che ho trovato è un'opzione per escludere/includere un file da una destinazione, ma non per un'architettura specifica.

C'è un modo per impostare le condizioni dell'architettura per file specifici?

+0

Quale lingua ha l'interfaccia della libreria, Obj-C, C++ o semplice C? E quanti metodi contiene l'interfaccia? – Kay

+0

In realtà ho diverse librerie, la maggior parte in C++ e poche in Obj-C. Non sono tutti necessari per il simulatore (tutti riguardano l'elaborazione audio/video), ma desidero almeno che il progetto si sviluppi correttamente sul simulatore poiché è più veloce testare l'interfaccia utente lì. –

+0

Sembra che non ci sia una soluzione facile. Se possibile, prova a separare tutte le chiamate alla libreria in una o più facciate create da fabbriche astratte a seconda della destinazione. Quindi usa gli oggetti mock per il codice x86 – Kay

risposta

1

La soluzione migliore sarebbe separare la libreria di terze parti in un nuovo target che la costruisce come un framework statico. Impostalo come dipendenza per il tuo progetto, quindi imposta la struttura statica da collegare condizionatamente come descritto da Apple qui: http://developer.apple.com/library/ios/documentation/Xcode/Conceptual/ios_development_workflow/115-Configuring_Applications/configuring_applications.html#//apple_ref/doc/uid/TP40007959-CH19-SW7

Puoi aggiungere un nuovo target selezionando il Progetto nella barra di navigazione del progetto e quindi premendo il pulsante Aggiungi target pulsante nella parte inferiore del riquadro Editor. È possibile impostare una libreria statica di tocco di cacao e quindi assegnare i file .m o .c pertinenti affinché appartengano solo a tale destinazione. Quindi seleziona la destinazione della tua app e aggiungi la struttura statica nella sezione "Dipendenze di destinazione" della scheda Fasi di costruzione.

+0

Questo è esattamente quello che stavo cercando, grazie! –

+0

Qual è il collegamento aggiornato a questa risorsa? – Tobias

Problemi correlati