Xcode 4(および依存関係)のコンパイル、ビルド、またはアーカイブの問題


96

この質問は、過去数週間にわたって進化し、より一般的な問題をカバーしています (そして古いプロジェクトからのアップグレードプロジェクト s)。

ただし、問題の多くは、同じ手順に従うことで解決できます。

次のいずれかの問題がある場合は、承認された回答の方法を試してください。

  • Xcode 4がアプリのアーカイブに失敗する
  • Xcode 4が使用できないアーカイブを作成する
  • Xcode 4は.ipaを作成しません
  • Xcode 4は、プリプロセッサエラーのためにコンパイルに失敗します
  • Xcode 4はヘッダーを見つけることができません
  • Xcode 4のコードコンプリートが機能しない
  • プロジェクトの依存関係はコンパイルされません
  • 依存関係を追加すると、上記の問題が発生します

元の質問

タイトル:Xcode 4の「字句またはプリプロセッサの問題ファイルが見つかりません」

Xcode 4にプロジェクトがあり、正常にビルドしてデバイスとシミュレーターで実行しますが、静的ライブラリに関連付けられたヘッダーファイルを検索すると、アーカイブしようとするとエラーが発生します。

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はエラーを出します

lexical or preprocessor issue file not found 

多くのグーグルで、多くの人がこの問題を抱えているが解決策がないことを示しています。誰でも修正または手がかりを得ました。

更新:user header検索パスに設定されている${BUILT_PRODUCTS_DIR}すべての構成で。アーカイブ時を除いて、任意の構成を使用して正常に構築されます。

更新2: Merchant.h自動生成されるコアデータクラスであるため、.xcdatamodeldパッケージ内にありますが、ライブラリが構築されると、ヘッダーはすべてパブリックヘッダーディレクトリにコピーされます。

回答:


119

注意:以下の手順でXcodeアーカイブの問題の90%を解決できますが、コメントから、 最初にXcodeを終了してみることをお勧めします。これにより、調整の時間を節約できます。

  1. 「ユーザーヘッダーパス」が正しいことを確認します(プロジェクトと依存関係の両方で、スペースのパスに「」を追加します)
  2. [常にユーザーパスを検索する]をYESに設定します
  3. 、プロジェクト内の「ヘッダの索引付け」グループ通話を作成し、このグループにヘッダをドラッグしないでくださいプロンプトが表示されたら、任意のターゲットに追加します。これには、.xcdatamodeld内のヘッダーが含まれます。ヘッダーを見つけるには、右クリックしてパッケージの内容を表示する必要があります。
  4. すべての依存関係について、「インストールのスキップ」ビルド設定を「はい」に設定します
  5. ビルドフェーズの「パブリック」ヘッダーを「プロジェクト」に移動する
  6. ターゲットのビルド設定「インストールディレクトリ」$(LOCAL_APPS_DIR)
  7. ターゲットのビルド設定「すべてのソースファイルをスキャンしてインクルードする」をYESに変更します。(リンク
  8. Xcodeの新しいバージョン(> 4.2)では、ワークスペースに関連するこの質問読むことをお勧めします。
  9. すべての参照プロジェクトからproject.xcworkspaceファイルを手動で削除します

28
最後の提案は、この問題を修正するために必要なすべてです。Xcodeを閉じて再度開きます。
クリスマイルズ

1
うん、私にとっても同じことですが、Xcodeを再起動する必要がありました。これは、プロジェクト内でファイルの名前を変更して移動した後に発生しました。
Maurizio、

私も。存在してはならないバグほどイライラするものはありません。簡単に解決できるのは素晴らしいことです。
maxedison、2011年

3
古いプロジェクトをxcode3からxcode4に移行するThree20ユーザーへの注意:ターゲットによって指定されたxcode設定/場所/詳細/->場所を変更する必要がある場合があります。詳細については、stackoverflow.com / questions / 5261447 /…を参照してください
Ben G

1
番号1の聖なるがらくた。引用符!もちろん、環境$(SRC_ROOT)は、スペースを含むパスで解決できます。プロジェクトを圧縮して別の場所に解凍するとビルドが失敗する理由を理解できませんでした。
Erik Kerber 2013年

13

XCode 4で同じ問題が発生しました:「字句またはプリプロセッサの問題MyFile.hが見つかりません」。ただし、MyFile.mは静的ライブラリではなく、単なる標準クラスでした。また、MyFile.mとMyFile.hが適切に含まれ、プロジェクトにインデックスが付けられました。

だから... XCodeとSimulatorを終了して再起動すると、問題は解消しました。


私も同じような状況でしたが、同じクラスにある無関係なプロパティを誤って参照したために、不要なエラーが表示されました(基本的に、私はselfを使用するのを忘れていました。)-奇妙なエラー。
JARC 2013年

11

ターゲットビルド設定の「すべてのソースファイルをスキャンしてインクルードする」を「いいえ」から「はい」に変更すると、問題が解決したことがわかりました。


6

ファインダー内のプロジェクトのディレクトリに.hファイルをコピーするだけで、ビルド設定を変更せずにこの問題を解決できました。私はそれらをプロジェクトにまったく追加しませんでした。それらをプロジェクトのファイルシステムディレクトリに置くだけで、Xcodeの暗黙的なリンクが適切に機能するのに十分であるように見えました。詳細はこちら


+1質問へのリンクを追加しました。情報に感謝します。
Richard Stelling

4

このような奇妙な問題がありました。[すべてのリソースファイルをスキャン...]を[はい]に変更しても、効果はありませんでした。フレームワーク検索パスを確認したところ、

  • $(継承)
  • 「$(SRCROOT)」
  • 「$(SRCROOT)/ my / correct / path」

それは正しいように見えましたが、それでも失敗していました。次に、2と3の順序を並べ替えてみましたが、突然、うまくいきました。なぜそれが問題だったのかはわかりませんが、他の人を助ける場合に備えて、それを試行錯誤のリストに追加したいと考えました。


4

私の解決策は私を変えることでした

#import "HeaderFile.h"

#import <FrameworkName/HeaderFile.h>

そして、すべてが再び働き始めました。異常なのは、数回ビルドした後、突然機能しなくなったことです。


私は自分のサブプロジェクトで他のすべてを試しましたが、これが機能する唯一のものでした。ありがとうございました。
dirkoneill 2013

静的ライブラリには引き続き二重引用符を使用する必要があります。山かっこは、システムヘッダーパスを検索し、[常にユーザーパスを検索する]オプションを有効にしない限りユーザーヘッダーパスを検索しません。
devios1 2015年

2

設定すると問題は自動的に解決しました

ビルド設定->プロジェクト->検索パスを[はい]に


2

私は同じでした—プロジェクトに2つのターゲット(ProjectProjectTest of GHUnit)がありました。私のスキームがProjectに設定されたとき、のインポート<GHUnitIOS/GHUnit.h>「字句またはプリプロセッサの問題ファイルが見つかりません」の問題でした。しかし、私がスキーマProjectTestとして設定したとき、すべてが大丈夫でした。それで、Projectにも追加GHUnitIOS.frameworkしました。


私は反対の問題を抱えていました。私の回答をご覧ください:stackoverflow.com/a/16783389/629014
slcott

1

アクティブなスキームのビルド設定でヘッダー検索パスが正しく構成されていないようです。それらを確認し、現在の設定で質問を更新します。


1

シミュレータで同様の問題がありますが、デバイスではなく、ヘッダー検索パスフィールドが空です(デフォルトのようです)。しかし、ワークスペースを変更することで問題は解決したようです。新しいワークスペースを作成してプロジェクトを追加し、それが役立つかどうかを確認することができます。現在、その理由を調査しています。


1

プロジェクトの特定の.hファイルに対して、この「ファイルが見つかりません」というエラーが発生しました。その.hファイルをプロジェクトから削除し([参照の削除]を選択)、それを再度追加することで問題を解決しました。


1

より多くのバリエーションに追加:私は2つのインスタンスだったfoo.mCompile Source生じたどのようにいくつかのために、「ヘッダーが見つかりません」ビルドフェーズを、foo.h


1

別の機会:

ワークスペースプロジェクトの場合:ターゲットのセクション「ビルドフェーズ」を確認します。多くのマニュアルでは、共有するヘッダーファイルをiOSフレームワークに含めることができないため、すべてのヘッダーを別の場所にコピーするには、ファイルのコピービルドフェーズが必要であると述べています(これは私の場合です)。

これらのコピー先ファイルとしてオプション「製品ディレクトリ」を選択します。または、ヘッダーが常駐する同類の別のディレクトリ。

それでうまくいきました。おそらく、アーカイブ(またはリリース)ディレクトリのビルドは、Debugのビルドで予想されるものとは大きく異なります。

また、ワークスペース設定でビルドディレクトリを確認してください。

XD


0

私にとって、この問題はプロジェクトに新しいファイルを追加した後に発生しました。NSObjectから派生した空白の.mおよび.h 解決方法は次のとおりです。

  1. xCodeを閉じて再起動しました
  2. XCode経由で2つの新しいファイルを削除
  3. 正常に再コンパイルされました

その後、それらを再度追加しましたが、これも機能しました。

間違いなくxCodeのバグ...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.