2010-02-20 12 views
16

XCode'a yeni geliyorum ve dosya yönetimini büyük bir acı buluyorum. Çoğu IDE'de, proje kaynak ağacı referansını diskte bir dizin yapısına sahip olabilirsiniz. Bu, projenize yeni dosyalar eklemenizi kolaylaştırır - bunları sadece diske yerleştirirsiniz ve otomatik olarak derlenirler.Xcode proje kaynak dosyalarını dosya sisteminizin dizinleriyle eşitlemede nasıl tutarsınız?

XCode ile, hem dosyayı oluşturmam hem de projeye ayrı ayrı eklemem gerekiyor (veya dosya sistemini UI aracılığıyla işlemek zorunda kalmak zorundayım). Ancak bu, .xcodeproj'un kaynak denetimi yoluyla paylaşılmasının sorunlarla doludur - genellikle, xcodeproj dosyasında birleştirme çakışmalarını alırız - ve bunu yapmadığımız zaman, çoğunlukla dosya hatalarını alırız, çünkü bazı dosyalar birleştirme sırasında Projede listelenenler kesildi. Bu yüzden bunları derlemek ve proje dosyasında yeniden kontrol edinceye kadar proje dosyasına yeniden eklemem gerekiyor.

Eminim ki burada bir şey eksik olmalıyım. 'Referans klasörleri' kullanmayı denedim ancak bunların içindeki kodlar derlenmiş gibi görünmüyor. Bir projeye dosya eklediğinde veya kaldırdığında herkesin tek bir paylaşılan dosyayı değiştirmesini zorlayan bir IDE oluşturması çılgın görünüyor.

+0

Bu muhtemelen duymak istediğin şey değil, ama bu durumun durumu. Yine de proje dosyasıyla çok fazla birleştirme çakışması yaşadığına şaşıyorum. Uzun bir süredir Xcode (ve bundan önce de Project Builder'ı) kullanıyorum ve en azından son sürümlerde bu konuda fazla sorun yaşamadım. Biraz merak ediyorum, hangi sürüm kontrol sistemini kullanıyorsunuz? –

cevap

2

Şimdiye kadar kullandığım hiçbir IDE'nin (en azından C++ için) yaptığı gibi, bir dizindeki her şeyi otomatik olarak derleyen hangi IDE'leri kullandığınızı merak ediyorum. Tüm dosyaların bir listesini içeren bir proje dosyasına sahip olmak oldukça standart. Sadece vb, bu kadar , gerçekten birleştirme anlaşmazlıklardan çok fazla sorunları işi olmamalıdır yok nasıl göz önüne alındığında Neyse

, farklı hedefler için belirli dosyaları dahil dosya başına derleyici ayarlarının yapılmış olması Genellikle isteyebilirsiniz . En iyi tavsiye erken ve sık sık işlenecektir, böylece diğer insanların değişiklikleri ile adım atmayasınız. Projeye sadece dosya eklemek, proje ağacında tam olarak aynı noktaya eklenmedikçe bir çakışma ile sonuçlanmamalıdır. Xcode'u yıllardır ekibimizde kullanıyoruz ve çok nadiren anlaşmazlık yaşıyoruz: sadece birisi projeyi yeniden yapılandırdıysa.

Neyse ki, Xcode dosya formatı metin olduğu için, Codewarrior'ın İkili biçimiyle Bad Old Days'ın aksine, ortaya çıktıklarında uyuşmazlıkların çözümü genellikle oldukça kolaydır.

+2

Eclipse bu şekilde çalışır.Eminim başkaları da vardır - proje dosyaları oldukça saçmadır - genellikle dizin yapınızdaki tüm dosyaları, potansiyel göz ardı filtreleriyle istediğinizde. Bu, anlaşmazlıkların oldukça çözülebilir olduğu gibi görünüyor. –

+2

Aslında pek çok Linux/BSD/etc dosyaları oluşturuyor. Sistemler bu şekilde çalışır. Kaynak dosyalar dizinlerde sıralanır ve make dosyaları temelde A'yı oluştururken a, b ve c klasörlerindeki tüm dosyaların derlenmesini ve sonuçta oluşan tüm .o dosyalarının B hedefini oluştururken birbirine bağladığını bilir. b, e ve f klasörlerindeki tüm dosyaları derlemek. Bir defada iki hedef oluştururken, make dosyası bu şekilde yazılmadıkça aynı klasör iki kez oluşturulmaz. – Mecki

+0

NetBeans ve Visual Studio bunu da yapıyor, Xcode için yeni olan çoğu kişi bu üç IDE'den geliyor olabilir. Xcode hakkında en çok can sıkıcı bulduğum bir dosya bu dosyayı diske taşımaz, dolayısıyla Xcode'takiyle eşleşmeyen kafa karıştırıcı dosya yapıları ile sonuçlanırsınız. Visual Studio, dosyalara eklenmesini gerektirir, ancak bir dosya taşındığında diskte de taşır. –

4

Diğer cevaplara rağmen, bu kesinlikle diğer IDE'lerden bir kalkış ve büyük bir sıkıntıdır. Bildiğim iyi bir çözüm yok.

olarak, çok kullandığım bir hüner biraz daha katlanılabilir hale getirmek için - özellikle onları dosyaların sürü kaynak dizinleri ile - geçerli:

  • proje ağacındaki bir dizin seçin,
  • isabet silme anahtarı,
  • "Yeniden Başvurular Sadece Kaldır" ı seçin, ardından yeniden eklemek için dizini projeye sürükleyin.

Bu, dosyaların manuel olarak yeniden sıralanmasını engeller, ancak en azından değiştirilen dosyaların sayısına O (n) olması yerine, bir O (1) işlemini senkronize eder.

+1

İyi fikir. Götünde ne acı var, ama iOS için geliştirmenin birçok yönü var. – benvolioT