2009-11-05 5 views
5

Ho iniziato a usare XCode e sembra funzionare, beh, la maggior parte.Come posso risolvere xcode compilando tutto tutto il tempo?

La cosa fastidiosa è che compila tutti i file sorgente, anche quelli che non cambiano, ogni volta.

Ricevo i grip con openframeworks e spreco tempo a compilare i file sorgente di openframeworks tutte le volte, anche se non cambiano.

Qui sono i miei IDE e macchine particolari:

XCode Versione 3.1.2 versioni dei componenti Xcode IDE: 1149,0 Xcode Nucleo: 1148,0 ToolSupport: 1102,0

Mac OS X versione 10.5 . 6

Qualcuno ha riscontrato lo stesso problema? Qualche soluzione alternativa?

+0

Più di una domanda di programmazione questo. – ChrisF

risposta

3

Molti (la maggior parte?) Sistemi di compilazione utilizzano la data e l'ora dell'ultima modifica dei file per determinare se è necessario eseguire una ricompilazione. Prima verificherei che le date del file si comportano come previsto; se i file si trovano su un'unità di rete, ad esempio, potrebbero esserci diverse impostazioni temporali o discrepanze di clock che potrebbero far apparire i file modificati in futuro, quindi il sistema di compilazione li compila sempre. Del resto, se si trovano su un'unità di rete, il protocollo utilizzato potrebbe non includere la data modificata e il sistema lo imposta semplicemente su "ora", quindi sembra sempre che ogni file sia stato appena modificato.

+0

Grazie qid, quello sembrava essere il problema! Non so perché non mi è passato per la testa. –

0

La mia esperienza è che ricompila cose che sono cambiate e cose che dipendono dalle cose che sono cambiate. Quindi, se stai modificando un file .h che ottiene #import in ogni altro file, allora tutto dovrà essere ricompilato. Tuttavia, se stai solo modificando un file .m, solo il file .m dovrebbe essere ricompilato. Non sono a conoscenza di alcuna impostazione Xcode che cambierebbe questo comportamento.

9

Alcuni file sono stati salvati, quindi il sistema operativo ha sincronizzato il sistema all'indietro. Quei file ora sono rilevati per essere modificati in futuro. Si dovrebbe eseguire il seguente comando bash nella cartella principale del progetto:

find . -exec touch {} \; 
+1

'touch' kann essere usato con più file, quindi' + 'invece di' \; 'funzionerebbe anche. – kay