2010-02-20 15 views
16

Jestem nowy w XCode i uważam zarządzanie plikami za ogromny ból. W większości środowisk IDE wystarczy, że drzewo źródłowe projektu odwołuje się do struktury katalogów na dysku. Ułatwia to dodawanie nowych plików do projektu - po prostu umieszczasz je na dysku, a one zostaną skompilowane automatycznie.Jak zachować synchronizację plików źródłowych projektu Xcode z katalogami systemu plików?

Wygląda na to, że z XCode muszę utworzyć plik i oddzielnie dodać go do projektu (lub zmusić go do manipulowania systemem plików za pośrednictwem interfejsu użytkownika). Oznacza to jednak, że dzielenie się .xcodeproj za pomocą kontroli źródła jest pełne problemów - często dochodzi do konfliktów scalających w pliku xcodeproj - a gdy tego nie robimy, często dostajemy błędy linkerów, ponieważ podczas scalania niektórych plików które zostały wymienione w projekcie zostaną wycięte. Muszę więc je ponownie dodać do pliku projektu, dopóki nie uda mi się go skompilować, a następnie ponownie sprawdzić w pliku projektu.

Jestem pewna, że ​​czegoś tu brakuje. Próbowałem używać "folderów referencyjnych", ale kod w nich nie wydaje się skompilowany. Wydaje się szalone, aby zbudować IDE, który zmusza wszystkich do modyfikowania pojedynczego udostępnionego pliku przy dodawaniu lub usuwaniu plików do projektu.

+0

To prawdopodobnie nie jest to, co chcesz usłyszeć, ale taki jest stan rzeczy. Jestem zaskoczony, że dostajesz tyle konfliktów scalających z plikiem projektu. Już od dawna używam Xcode (i programu Project Builder), a przynajmniej w ostatnich wersjach nie miałem z tym problemu. Jestem trochę ciekawy, z jakiego systemu kontroli wersji korzystasz? –

Odpowiedz

2

Jestem zaintrygowany, których IDE używasz, które automatycznie kompilują wszystko w katalogu, ponieważ nie używa tego IDE, którego używałem (przynajmniej dla C++). Myślę, że standardem jest posiadanie pliku projektu zawierającego listę wszystkich plików. Często możesz chcieć uwzględnić tylko niektóre pliki dla różnych celów, mieć ustawienia kompilacji dla poszczególnych plików, itd.

W każdym razie, ponieważ tak działa ,, nie powinieneś mieć zbyt wielu problemów z konfliktami scalającymi . Najlepszą radą byłaby wczesna akceptacja i często byś nie tracił kroku na zmiany innych ludzi. Tylko dodanie plików do projektu nie powinno powodować konfliktu, chyba że zostaną dodane w dokładnie tym samym punkcie drzewa projektu. Od lat używamy Xcode w naszym zespole i bardzo rzadko pojawiają się konflikty: tylko wtedy, gdy ktoś zrestrukturyzował projekt.

Na szczęście, ponieważ formatem pliku Xcode jest tekst, zazwyczaj łatwo jest rozwiązać konflikty, gdy występują, w przeciwieństwie do Bad Old Days Codewarrior z jego binarnym formatem.

+2

Eclipse działa w ten sposób, na przykład.Jestem pewien, że są inne - pliki projektów są dość głupie - kiedy zwykle chcesz tylko wszystkie pliki w strukturze katalogów, z potencjalnymi filtrami ignoruj. To powiedziawszy, wydaje się, że konflikty są całkiem możliwe do rozwiązania. –

+2

Właściwie wiele plików do zrobienia dla Linux/BSD/etc. systemy działają w ten sposób. Pliki źródłowe są posortowane w katalogach, a pliki make zasadniczo wiedzą, że budując cel A, musi on skompilować wszystkie pliki w folderach a, b i c oraz połączyć wszystkie powstałe pliki .o razem, budując cel B, aby skompilować wszystkie pliki w folderach b, e i f. Podczas budowania dwóch obiektów jednocześnie, ten sam folder nie jest budowany dwa razy, chyba że plik make został zapisany w ten sposób. – Mecki

+0

Robi to również NetBeans i Visual Studio, większość ludzi, którzy są nowi w Xcode, prawdopodobnie pochodzą z tych trzech IDE. Najbardziej irytujące w Xcode jest to, że przenoszenie pliku nie przenosi tego na dysk, więc kończy się to mylącymi strukturami plików, które nie pasują do tego, co jest w Xcode. Program Visual Studio wymaga dodania do niego plików, jednak po przeniesieniu pliku przenosi go również na dysk. –

4

Inne odpowiedzi, niezależnie od tego, jest to absolutnie odejście od innych IDE i poważne uciążliwości. Nie znam dobrego rozwiązania.

Ten trik używam dużo, aby uczynić go trochę bardziej znośne - zwłaszcza z katalogów zasobów z dużą ilością plików w nich - jest:

  • wybrać katalog w drzewie projektu,
  • hitem klucz do usunięcia, wybierz "Usuń tylko odniesienia", następnie
  • przeciągnij katalog do projektu, aby go ponownie dodać.

Spowoduje to ręczne zmiany kolejności plików, ale przynajmniej spowoduje synchronizację operacji O (1), zamiast być O (n) w liczbie zmienionych plików.

+1

Dobry pomysł. Co za ból w dupie, ale tak samo wiele aspektów rozwoju na iOS. – benvolioT