2010-02-20 8 views
16

Sono nuovo di XCode e trovo che la gestione dei file sia enorme. Nella maggior parte degli IDE, è sufficiente che l'albero di origine del progetto faccia riferimento a una struttura di directory sul disco. Ciò semplifica l'aggiunta di nuovi file al progetto: li si inserisce semplicemente su disco e verranno compilati automaticamente.Come mantenere i file sorgente del progetto Xcode in sincronia con le directory del file system?

Con XCode, sembra che sia necessario creare il file e aggiungerlo separatamente al progetto (o essere costretto a manipolare il filesystem attraverso l'interfaccia utente). Ma questo significa che condividere il file .xcodeproj attraverso il controllo del codice sorgente è pieno di problemi - spesso, otterremo conflitti di merge sul file xcodeproj - e quando non lo facciamo, riceviamo spesso errori di linker, perché durante l'unione di alcuni file che sono stati elencati nel progetto vengono tagliati. Quindi devo andare e riaggiungerli al file di progetto finché non riesco a farlo compilare, e quindi ricontrollare il file di progetto.

Sono sicuro che mi manca qualcosa qui. Ho provato a utilizzare "cartelle di riferimento", ma il codice in esse non sembra essere compilato. Sembra folle costruire un IDE che costringa tutti a modificare un singolo file condiviso ogni volta che si aggiungono o rimuovono file in un progetto.

+0

Questo probabilmente non è quello che vuoi sentire, ma questo è lo stato delle cose. Sono sorpreso dal fatto che stai ottenendo così tanti conflitti di unione con il file di progetto. Ho usato Xcode (e Project Builder prima) per molto tempo e almeno nelle ultime versioni non ho avuto molti problemi con questo. Sono un po 'curioso, che sistema di controllo della versione stai usando? –

risposta

2

Sono incuriosito dagli IDE che si stanno utilizzando che compilano automaticamente tutto in una directory, poiché nessun IDE che io abbia mai usato lo fa (almeno per C++). Penso che sia piuttosto normale avere un file di progetto contenente un elenco di tutti i file. Spesso si consiglia di includere solo determinati file per target diversi, hanno impostazioni del compilatore per file, ecc

In ogni caso, visto che è così che fa lavoro, davvero non dovrebbe avere troppi problemi da conflitti di unione . Il miglior consiglio sarebbe quello di impegnarsi presto e spesso in modo da non uscire dal passo con i cambiamenti degli altri. La semplice aggiunta di file al progetto non dovrebbe comportare un conflitto a meno che non vengano aggiunti esattamente allo stesso punto nell'albero del progetto. Da anni utilizziamo Xcode nel nostro team e raramente ci sono conflitti: solo se qualcuno ha ristrutturato il progetto.

Fortunatamente, poiché il formato del file Xcode è testo, è generalmente abbastanza semplice risolvere i conflitti quando si verificano, diversamente dai Bad Old Days di Codewarrior con il suo formato binario.

+2

Eclipse funziona in questo modo, ad esempio.Sono sicuro che ce ne sono altri - i file di progetto sono piuttosto stupidi - quando in genere si desidera solo tutti i file nella struttura della directory, con potenziali filtri di ignoranza. Detto questo, sembra che i conflitti siano piuttosto risolvibili. –

+2

In realtà molti fanno file per Linux/BSD/etc. i sistemi funzionano in questo modo. I file di origine sono ordinati in directory e i file make in sostanza sanno che quando si costruisce la destinazione A, deve compilare tutti i file nelle cartelle a, b, e c e collegare tutti i file .o risultanti insieme, quando si costruisce l'obiettivo B, ha compilare tutti i file nelle cartelle b, e, ef. Quando si creano due target contemporaneamente, la stessa cartella non viene creata due volte, a meno che il file make non sia stato scritto in questo modo. – Mecki

+0

Anche NetBeans e Visual Studio lo fanno, la maggior parte delle persone nuove a Xcode probabilmente provengono da questi tre IDE. Quello che trovo più fastidioso di Xcode è che lo spostamento di un file non lo sposta su disco, quindi si finisce con strutture di file confuse che non corrispondono a ciò che è in Xcode. Visual Studio richiede l'aggiunta di file, tuttavia, quando viene spostato un file, lo sposta anche su disco. –

4

Nonostante altre risposte, questo è assolutamente un allontanamento dagli altri IDE e un grave inconveniente. Non c'è una buona soluzione che io conosca.

Quello trucco che uso molto per renderlo un po 'più sopportabile - in particolare con le directory di risorse con un sacco di file in esse - è:

  • selezionare una directory nella struttura di progetto,
  • colpo il tasto di cancellazione,
  • scegli "Rimuovi Riferimenti Solo", quindi
  • trascinare la directory nel progetto di ri-aggiungerlo.

Questo elimina ogni riordino manuale dei file, ma effettua almeno la sincronizzazione di un'operazione O (1), invece di essere O (n) nel numero di file modificati.

+1

Buona idea. Che dolore nel culo, ma lo sono anche molti aspetti dello sviluppo per iOS. – benvolioT