Xcode 4 (ve bağımlılıklar) ile sorunları Derleme, Derleme veya Arşivleme


96

Bu soru, geçtiğimiz haftalarda daha genel sorunları kapsayacak şekilde gelişti. (ve projeleri yükseltmek daha eskidir s).

Bununla birlikte, sorunların çoğu aynı talimatlar kullanılarak çözülebilir.

Aşağıdaki sorunlardan herhangi birine sahipseniz, kabul edilen yanıttaki yöntemleri deneyin:

  • Xcode 4 bir Uygulamayı arşivleyemiyor
  • Xcode 4, kullanılamaz bir arşiv oluşturur
  • Xcode 4 bir .ipa oluşturmaz
  • Xcode 4, ön işlemci hataları nedeniyle derlenemiyor
  • Xcode 4 üstbilgileri bulamıyor
  • Xcode 4'ün kodu tamamlandı çalışmıyor
  • Proje bağımlılıkları derlenmeyecek
  • Bağımlılık eklemek yukarıdaki sorunlardan herhangi birine neden olur

Orijinal Soru

Başlık: Xcode 4'te "sözcük veya önişlemci sorun dosyası bulunamadı"

Xcode 4'te, cihazda ve simülatörde iyi inşa edecek ve çalışacak bir projem var, ancak arşivlemeye çalışırken statik bir kitaplıkla ilişkili başlık dosyalarını ararken hata veriyor:

In file included from /Volumes/Development/Path/LBProject/LBProject/LBProject-Prefix.pch:15:
In file included from /Volumes/Development/Path/LBProject/LBFDefines.h:23:
In file included from /Volumes/Development/Path/LBProject/Classes/LBProjectAppDelegate.h:11:
In file included from /Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDirectoryManager.h:10:
/Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDataModel.h:11:9: fatal error: 'Merchant.h' file not found [1]
 #import "Merchant.h"
         ^
1 error generated. 

Xcode hata veriyor

lexical or preprocessor issue file not found 

Googling'in çoğu , birçok insanın bu sorunu yaşadığını ancak çözüm olmadığını gösterdi. Herkesin bir düzeltmesi, hatta bir ipucu var.

Güncelleme:user header arama yolları ayarlanır ${BUILT_PRODUCTS_DIR}tüm konfigürasyonlarda. Arşivleme dışında herhangi bir yapılandırmayı kullanarak iyi inşa eder.

Güncelleme 2: Merchant.h otomatik olarak oluşturulan ve bu nedenle .xcdatamodeldpaketin içinde olan bir Çekirdek Veri sınıfıdır , ancak kitaplık oluşturulduğunda başlıkların tümü genel başlıklar dizinine kopyalanır.

Yanıtlar:


119

Not: Aşağıdaki adımlar Xcode arşivi sorunlarınızın% 90'ını çözecektir, ancak yorumlardan önce Xcode'dan çıkmayı denemeniz önerilir . Bu size saatlerce ayar yapmaktan tasarruf sağlayabilir.

  1. "Kullanıcı başlığı yollarının" doğru olup olmadığını kontrol edin (hem projenizde hem de bağımlılıklarınızda boşluklar için yollara "" ekleyin)
  2. "Her zaman kullanıcı yollarını ara" yı EVET olarak ayarlayın
  3. Projenizde bir grup çağrısı "İndeksleme başlıkları" oluşturun ve başlıkları bu gruba sürükleyin, istendiğinde herhangi bir hedefe EKLEMEYİN . Buna .xcdatamodeld'inizdeki tüm başlıklar dahildir , bunları bulmak için paket içeriğini sağ tıklamanız ve görüntülemeniz gerekir.
  4. Tüm bağımlılıklar için "Yüklemeyi Atla" derleme ayarını "Evet" olarak ayarlayın
  5. Derleme Aşamalarında herhangi bir "Herkese Açık" üstbilgiyi "Proje" ye taşıma
  6. Hedefinizdeki Yapı Ayarı "Kurulum Dizini" ni şu şekilde ayarlayın:$(LOCAL_APPS_DIR)
  7. Hedef derleme ayarını "içermek için tüm kaynak dosyaları tara" seçeneğini EVET olarak değiştirin. ( bağlantı )
  8. Xcode'un daha yeni sürümleriyle (> 4.2) , çalışma alanlarıyla ilgili bu soruyu okumak isteyebilirsiniz .
  9. Tüm başvurulan projelerden project.xcworkspace dosyalarını manuel olarak silin

28
En son öneri, bu sorunu düzeltmek için ihtiyacım olan tek şey. Xcode'u kapatıp yeniden açın.
Chris Miles

1
Evet, benim için aynı şey, sadece Xcode'u yeniden başlatmak zorunda kaldı. Projede dosyaları yeniden adlandırıp taşıdıktan sonra oldu.
Maurizio

Ben de. Var olmaması gereken bir hatadan daha sinir bozucu bir şey yoktur. Bu kadar kolay çözülmesi harika.
maxedison

3
Eski projeleri xcode3'ten xcode4'e taşıyan Three20 kullanıcısına not: Hedefe göre xcode Preference / locations / advanced / -> Locations'ı değiştirmeniz gerekebilir (olabilir). Daha fazla bilgi için stackoverflow.com/questions/5261447/… sayfasına bakın
Ben G

1
1 numaralı kutsal bok. Alıntılar! Ortam $ (SRC_ROOT) elbette boşluklu bir yol ile "çözülebilir". Projemi sıkıştırmanın ve başka bir yerden çıkarmanın neden bir yapı hatasıyla sonuçlandığını anlayamadım!
Erik Kerber

13

XCode 4'te de aynı sorunu yaşadım: "Sözlüksel veya önişlemci sorunu MyFile.h bulunamadı". Ancak MyFile.m, statik bir kitaplık değil, yalnızca standart bir sınıftı. Ve MyFile.m ve MyFile.h uygun şekilde dahil edildi ve projeye dizine eklendi.

Yani ... XCode ve Simulator'dan çıktım, sonra yeniden başlattım ve sorun ortadan kalktı.


Benzer bir durum yaşadım, ancak aynı sınıftaki ilgisiz bir mülke yanlış bir şekilde referans verilmesi nedeniyle görüntülenen istenmeyen hata (temelde self'i kullanmayı unuttum) - garip bir hata.
JARC

11

Hedef derleme ayarını "tüm kaynak dosyaları içermek için tara" seçeneğini hayırdan evet olarak değiştirdiğimde sorunun ortadan kalktığını gördüm.


6

Bu sorunu, herhangi bir yapı ayarında değişiklik yapmadan, sadece .h dosyalarını bulucudaki Proje dizinine kopyalayarak çözebildim. Bunları projeye hiç EKLEMEDİM. Bunları projenin dosya sistemi dizininde bulundurmak, Xcode'un örtük bağlantısının düzgün çalışmasına izin vermek için yeterli görünüyordu. Daha fazla ayrıntı burada .


+1 Cevabını kabul ettiği soruya bir bağlantı ekledim, bilgi için teşekkürler!
Richard Stelling

4

Bunun gibi tuhaf bir sorun yaşadım. "Tüm kaynak dosyalarını tara ..." seçeneğini Evet olarak değiştirmek yardımcı olmadı. Çerçeve Arama Yollarına bir göz attım ve sahip olduğumu fark ettim

  • $ (devralınan)
  • "$ (SRCROOT)"
  • "$ (SRCROOT) / benim / doğru / yolum"

Doğru görünüyordu ama yine de başarısız oluyordu. Daha sonra 2 ve 3'ün sırasını yeniden düzenlemeyi denedim ve birdenbire iyi inşa edildi. Öyleyse neden bunun neden olduğundan emin değilim, ancak başka birine yardımcı olması durumunda denenecek şeyler listesine eklemek istedim.


4

Benim çözümüm benim

#import "HeaderFile.h"

-e

#import <FrameworkName/HeaderFile.h>

ve her şey yeniden çalışmaya başladı. Olağandışı olan şey, birkaç kez inşa ettikten sonra aniden çalışmayı bırakmasıydı.


Alt projemle diğer her şeyi denedim ve işe yarayacak tek şey buydu. Teşekkür ederim.
dirkoneill

Statik kitaplıklar için yine de çift tırnak kullanmalısınız. Açılı ayraçlar sistem üstbilgi yollarını arar ve gerek duymadığınızda yapmamanız gereken Kullanıcı Yollarını Her Zaman Ara seçeneğini de etkinleştirmediğiniz sürece kullanıcı başlığı yollarını aramaz .
devios1

2

Ayarladığımda sorun kendi kendine çözüldü

Yapı Ayarları-> Proje-> Evet'e Giden Yolları Ara


2

Projemde (2 hedefleri - Aynı vardı Proje ve ProjectTest arasında GHUnit). Benim düzeni için kurulduğu zaman Projesi , ithalat <GHUnitIOS/GHUnit.h>sorunu oldu bulunamadı “sözcük veya önişlemci sorunu dosyası” . Ama bir ProjectTest planı olarak belirlediğimde her şey yolundaydı . Yani, eklemiş GHUnitIOS.frameworkiçinde Projesi de.


Ben tam tersi bir sorun yaşadım. Cevabımı görün: stackoverflow.com/a/16783389/629014
slcott

1

Görünüşe göre başlık arama yollarınız, etkin şema için yapı ayarlarınızda doğru şekilde yapılandırılmamış. Bunları doğrulayın ve sorunuzu mevcut ayarla güncelleyin.


1

Simülatörde benzer sorunlar yaşıyorum ancak cihazda değil ve başlık arama yolu alanlarım boş (varsayılan gibi görünüyor). Ancak değişen Çalışma Alanları sorunu çözmüş görünüyor. Belki yeni bir Çalışma Alanı oluşturmayı deneyebilir, projenizi buna ekleyebilir ve bunun yardımcı olup olmadığına bakabilirsiniz. Şimdi nedenini araştırıyorum.


1

Projemdeki belirli bir .h dosyası için bu "dosya bulunamadı" hatasını alıyordum. Bu .h dosyasını projeden kaldırarak ("Referansları kaldır" ı seçerek) ve yeniden ekleyerek sorunu çözdüm.


1

Daha varyant üzerinde ekleme: Ben iki örneğini vardı foo.miçinde Compile Sourceneden nasıl bazıları için "Başlık bulunamadı" yapım aşamasından, foo.h.


1

Bir şans daha:

Çalışma alanı projesinde: Hedef Oluşturma Aşamaları bölümünde izleyin. Birçok kılavuzda söylendiği gibi, tüm başlıklarınızı başka bir yere kopyalamak için bir Dosya Kopyalama Oluşturma Aşamasına sahip olmanız gerekir, çünkü iOS Framework paylaşılacak başlık dosyalarını içeremez (bu benim durumum).

Dosyaları Hedef Olarak Kopyala seçeneği için "Ürünler Dizini" seçeneğini seçin. Veya başlıkların yer alacağı, beğendiğiniz başka bir dizin.

Bu benim için çalıştı. Muhtemelen Arşiv (veya Yayın) dizini için derleme, Hata Ayıklama için derlemede beklenenden çok farklıdır.

Ayrıca çalışma alanı ayarlarınızda derleme dizininizi kontrol edin.

XD


0

Benim için bu sorun projeye yeni dosyalar ekledikten sonra ortaya çıktı; NSObject'ten türetilen boş bir .m ve .h. İşte bunu nasıl çözdüm:

  1. XCode kapatıldı ve yeniden başlatıldı
  2. XCode aracılığıyla iki yeni dosya silindi
  3. Başarıyla yeniden derlendi

Daha sonra onları tekrar ekledim ve işe yaradı.

XCode'da kesinlikle bir hata ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.