2009-11-05 11 views
5

Zacząłem używać XCode i wygląda na to, że działa, no cóż, większość.Jak mogę naprawić cały czas kompilację kodu Xcode?

Denerwujące jest to, że kompiluje wszystkie pliki źródłowe, nawet te, które się nie zmieniają, za każdym razem.

Zajmuję się obsługą ramek typu open source i tracę czas na kompilowanie plików źródłowych openframework za każdym razem, chociaż się nie zmieniają.

Oto moje IDE i maszynowe szczegóły:

XCode Version 3.1.2 składowe wersje Xcode IDE: 1149,0 Xcode Rdzeń: 1148,0 ToolSupport: 1102,0

Mac OS X w wersji 10.5 . 6

Czy ktoś doświadczył tego samego problemu? Jakiekolwiek obejścia?

+0

Więcej pytanie na temat programowania tego. – ChrisF

Odpowiedz

3

Wiele (większość?) Systemów kompilacji korzysta z ostatnio zmodyfikowanej daty i godziny plików, aby określić, czy konieczna jest ponowna kompilacja. Najpierw sprawdziłbym, czy daty plików zachowują się zgodnie z oczekiwaniami; jeśli na przykład pliki znajdują się na dysku sieciowym, mogą istnieć różne ustawienia czasu lub rozbieżności zegara, które sprawiają, że wydaje się, że pliki zostały zmodyfikowane w przyszłości, więc system kompilacji zawsze je kompiluje. W tym przypadku, jeśli są na dysku sieciowym, używany protokół może nie zawierać daty modyfikacji, a system po prostu domyślnie przyjmuje "teraz", więc zawsze wygląda na to, że każdy plik został właśnie zmodyfikowany.

+0

Dzięki qid, to wydawało się być problemem! Nie wiem, dlaczego nie przyszło mi to do głowy. –

0

Moje doświadczenie jest takie, że rekompiluje rzeczy, które zostały zmienione, i rzeczy, które zależą od rzeczy, które się zmieniły. Więc jeśli edytujesz plik .h, który dostaje #import 'd do każdego innego pliku, to naturalnie wszystko będzie musiało zostać skompilowane. Jednak jeśli edytujesz tylko plik .m, to tylko plik .m powinien zostać skompilowany ponownie. Nie jestem świadomy żadnego ustawienia Xcode, które zmieni to zachowanie.

9

Zapisałeś niektóre pliki, a następnie system operacyjny zsynchronizował czas systemowy do tyłu. Te pliki są teraz wykrywane do modyfikacji w przyszłości. Powinieneś wykonać następujące polecenie bash w głównym folderze projektu:

find . -exec touch {} \; 
+1

'touch' może używać wielu plików, więc' + 'zamiast' \; 'też by działało. – kay

Powiązane problemy