2016-05-07 15 views
5

Ho uno spazio di lavoro Xcode 7.3 con tre progetti, App, FrameworkA e FrameworkB. Ogni progetto ha un unico obiettivo. Questo è iOS, quindi gli obiettivi del framework sono Cocoa Touch Frameworks, che significa framework contenenti librerie condivise collegate dinamicamente.Come impostare le dipendenze del progetto Xcode con diverse configurazioni di build?

L'app dipende dal Framework A che dipende dal Framework B. Queste dipendenze funzionano, nella misura in cui A si collega correttamente al prodotto build di B, e l'App si collega correttamente e incorpora entrambi i framework A e B (perché non è possibile avere un framework che ne incorpora un altro, sembra che un pacchetto di applicazioni debba collegare e incorporare sia le dipendenze dirette che quelle transitive.)

Ma ecco il mio problema. I framework A e B hanno le solite configurazioni di build, Debug e Release. L'app ha un'ulteriore configurazione di build, LocalRelease, che viene attivata dall'azione Esegui build e utilizzata per creare una build ottimizzata (come Release) ma con codice firmato con un'identità sviluppatore (come Debug).

Quando provo a creare un'app con questa configurazione di build LocalRelease, questo interrompe la compilazione poiché interrompe le dipendenze sui framework A e B. Credo che sia perché questi framework non hanno configurazioni di build LocalRelease, quindi Xcode non mette mai il loro creare prodotti in una cartella LocalRelease-iphoneos, come con l'app.

Quindi la mia domanda ristretta è: come configurare le impostazioni di generazione in modo che un progetto con un nome di configurazione di build non standard (come LocalRelease) possa dipendere da altri progetti che utilizzano solo i nomi di configurazione di build standard? Spero che ci sia un modo semplice per farlo che non richiede l'aggiunta di script o file xcconfig, ma se sono necessari mi piacerebbe capire perché.

E la mia domanda più ampia è, è in generale una cattiva idea introdurre ulteriori configurazioni di build perché non consentono un'interazione uniforme delle dipendenze tra i progetti in uno spazio di lavoro condiviso? Sono stato portato a definire questa terza configurazione perché volevo una build locale ottimizzata, non volevo definire un nuovo schema e volevo che la scelta del tipo di build fosse espressa dalle varie azioni di compilazione (esecuzione, profilo, rilascio) di un unico schema.

Ma forse questo era il modo sbagliato per farlo. Finché è il caso che i nomi di configurazione di build guidano i percorsi di compilazione dei prodotti e i progetti dipendenti devono trovare i prodotti di costruzione degli altri in una directory condivisa, sembra che l'introduzione di un nome di configurazione di build non standard interrompa l'interoperabilità con dipende da altri progetti.

risposta

0

Ho sollevato un ticket di supporto tecnico per gli sviluppatori con Apple al riguardo e ho parlato con gli ingegneri Xcode al WWDC.

risposte alle mie domande

Come è possibile configurare le impostazioni di creazione in modo che un progetto con una build nome di configurazione non standard (come LocalRelease) può dipendere da altri progetti che utilizzano solo i nomi di configurazione di build Standard?

Risposta: impossibile.

è in generale una cattiva idea introdurre ulteriori configurazioni di build perché non consentono un'interazione uniforme delle dipendenze tra i progetti in un'area di lavoro condivisa?

Risposta: sì, questa è una cattiva idea.

Quindi creare una nuova configurazione di build con nome non è il modo più intelligente di fare ciò che stavo cercando di fare. Sfortunatamente, sembra che la soluzione "più semplice" sia quella di abbracciare i file xcconfig e modificare manualmente i file di configurazione per questo genere di cose.

Problemi correlati