2013-10-07 15 views
36

Vorrei che ci fosse una migliore documentazione per questo per Xcode 5, ma non sono riuscito a trovare qualcosa di decente che descrive le best practice per l'utilizzo di aree di lavoro, così ..Xcode aree di lavoro con sub-progetti e dipendenze del progetto trigger build

In un spazio di lavoro con diversi progetti (coppie di strutture, 1 app) è possibile avere Xcode creare tutti i progetti dipendenti solo quando richiesto (ossia le modifiche trovate) senza dover includere tutti i progetti in tutti i progetti dipendenti?

Preferirei piace avere solo i quadri del progetto a seconda che invece di avere 5-6 progetti secondari in esso come questo è solo un pasticcio nelle Navigazione View - file
all'interno sotto-progetti compaiono continuamente nei risultati di ricerca, i sottoprogetti in NavView si espandono per qualsiasi motivo all'interno dei progetti ..

Tuttavia, senza progetti inclusi un particolare progetto dipende da Non sono riuscito a trovare un modo per avere Xcode 5 ricostruire automaticamente i framework se una delle dipendenze è cambiata.

risposta

5

È possibile creare uno schema che costruisca tutti i target.

+1

Hmm .. vero - ma quello sarebbe l'approccio della forza bruta. Preferirei che Xcode creasse in modo intelligente solo le dipendenze richieste. – Jay

8

Su XCode 5 Devi andare

  • Selezionare il progetto sulla scheda sinistra
  • Scegli il target nella sezione OBIETTIVI
  • Poi in fasi di creazione> Target dipendenze presse "+"
  • Scegli il progetto aggiunto come target che verrà visualizzato nell'elenco Dipendenze obiettivo

Se funziona, quando si creano tutte le dipendenze di destinazione verranno costruite insieme se necessario.

+3

Non funziona per me - se l'altro progetto da cui dipende il progetto corrente non può essere aggiunto in * Build Phases *, né tramite ** + ** né tramite Drag & Drop dagli altri progetti nello spazio di lavoro. – Jay

+0

Provare prima a trascinare e rilasciare il secondo progetto sul primo. Quindi vai a Build Phase> Dipendenze di destinazione. Qui premendo "+" dovresti vedere il secondo progetto da selezionare. – loretoparisi

+0

Ho un framework e un altro progetto in uno spazio di lavoro e questo ha risolto il problema dei cloni dell'area di lavoro che non creavano dipendenze. Grazie –

43

Questa soluzione era pensata per un altro problema, ma forse soddisfa i tuoi bisogni.

Dopo aver aggiunto il tuo sottoprogetto allo spazio di lavoro:

  1. Selezionare la destinazione che dovrebbe utilizzare il sottoprogetto appena aggiunto
  2. In "binari di collegamento con le librerie" sotto fasi di creazione premere il pulsante +
  3. Se la Biblioteca non viene visualizzata "Aggiungi altro ..."
  4. Passare alla cartella in cui si trova il file di progetto (* .xcodeproj)
  5. Contrassegnarlo e premere "Apri"
  6. Ora si dovrebbe vedere il file di progetto è visibile in "binari di collegamento con le librerie"
  7. Sotto "Dipendenze target" nella stessa scheda, premere il pulsante +
  8. Ora si dovrebbe vedere i file necessari
  9. Controlla il tuo e premi "Aggiungi"
  10. Sempre nel "Collegamento binari con librerie" premi il pulsante +
  11. Ora il tuo.un file dovrebbe apparire e tu puoi scegliere e aggiungerlo

Ora stai usando la libreria scelta per il tuo obiettivo. Ripetere questi passaggi per ogni obiettivo che necessita di questo sottoprogetto. Spero possa aiutare! Per me lo ha fatto perché non ho potuto gestire per aggiungere le dipendenze a prima ...

Greetz, Tomte

+2

Questo non funziona se le dipendenze implicite sono disattivate, il che rallenta drasticamente l'indicizzazione e la creazione in spazi di lavoro di grandi dimensioni. –

+1

Vedere [Raspu's Answer] (http://stackoverflow.com/a/34202139/616644) se si hanno problemi con XCode 7. –

+0

Si noti che questo è un modo complesso di aggiungere un riferimento al progetto. Dopo aver seguito tutti i passaggi precedenti, prova a rimuovere il progetto da "Collega i file binari con le librerie" e osserva che hai ancora un riferimento al progetto nella sezione "Dipendenza obiettivo". Questo perché un riferimento al sotto-progetto è stato aggiunto al progetto quando è stato inserito in "Collega i file binari con le librerie". È possibile trovare questo riferimento nella directory "Frameworks". – Fostah

-1

considerare la migrazione a CocoaPods.

Non solo risolverà i problemi di build, ma con un progetto complesso come descriveresti faciliterà la vita durante l'aggiornamento/aggiunta/rimozione di framework, la modifica della versione del sistema di destinazione e la risoluzione di dipendenze e conflitti.

Anche il tuo spazio di lavoro diventerà probabilmente solo due progetti.

+0

Hmm - interessante. Anche se non riesco a vedere come una gestione delle dipendenze possa risolvere i problemi all'interno di Xcode quando vogliamo caricare tutti i progetti contemporaneamente. – Jay

+0

Probabilmente le dipendenze e le dipendenze delle dipendenze nello spazio di lavoro corrente sono così complesse che Xcode non riesce a decidere correttamente cosa ricostruire. – Rivera

+0

Solo buoni vecchi livelli di applicazione, in realtà - classi di base, moduli, applicazioni che si sommano l'una sull'altra. Niente cicli, niente fantasia. Solo un mucchio di progetti a seconda dei progetti nei livelli inferiori del sistema. – Jay

14

Nel caso in cui qualcun altro abbia problemi con questo in Xcode 7: Assicurarsi che il progetto che si desidera aggiungere come sottoprogetto sia non aperto, prima di aggiungerlo o rilasciarlo.

+1

Grazie per questo. Ho scoperto che dovevo anche chiudere un altro progetto che utilizzava il sottoprogetto per farlo aggiungere. ("Assicurati che il progetto che vuoi aggiungere come sottoprogetto non sia aperto, anche come sottoprogetto in un altro progetto, prima di aggiungerlo o rilasciarlo") – Kevin

+1

Grazie, grazie, mi hai strappato i capelli per un'ora. –

4

Questo deriva dalla risposta di Tomte. Il suo approccio mi causava un errore di analisi delle dipendenze . Questo è un approccio più diretto e spiega perché la risposta di Tomte funziona:

  1. Fare clic sul sottoprogetto e trascinarlo nel progetto che deve essere indirizzato al sotto-progetto.
  2. Ora dovrebbe essere visualizzato l'avviso delle opzioni. Assicurati che Copia gli articoli se necessario non è selezionato. Assicurati che Crea gruppi sia selezionato. Assicurati che nessuno degli obiettivi del progetto sia selezionato. Premere il pulsante Fine.
  3. Fare clic sul progetto a cui è stato appena aggiunto il riferimento del sottoprogetto.
  4. Fare clic sulla destinazione che si desidera avere una dipendenza dal sottoprogetto.
  5. Fare clic sul pulsante Target Dependecies +.
  6. Si noti che il prodotto del sottoprogetto è elencato come un'opzione. Selezionalo

Si noti che quando si utilizza l'approccio di Tomte, quando si aggiunge il progetto di collegamento binari con le librerie, si crea un riferimento al progetto. Questo riferimento al progetto può essere trovato nel gruppo Frameworks del progetto.

Sono in conflitto se questo è un buon approccio o no. L'approccio dello schema non è molto migliore, secondo me. In realtà mi sto chiedendo perché i project workspace non abbiano questa relazione per impostazione predefinita.

Per lo meno, questo dovrebbe chiarire la magia nella soluzione di Tomte.

Problemi correlati