web-dev-qa-db-ja.com

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

この質問は xcode4 (および古い xcode 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 

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

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

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

96
rjstelling

注:以下の手順は、Xcodeアーカイブの問題の90%を解決しますが、コメントから quiting Xcode firstをお勧めします。これにより、微調整の時間を節約できます。

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

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

だから...私はXCodeとシミュレータを終了し、それらを再起動し、問題は消えました。

13
richardsun

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

11
doc taco

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

6

私の解決策は

#import "HeaderFile.h"

#import <FrameworkName/HeaderFile.h>

そして、すべてが再び機能し始めました。珍しいのは、数回ビルドした後に突然動作しなくなったことです。

4
slcott

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

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

それは正しいように見えたが、まだ失敗していた。その後、2と3の順序を並べ替えてみましたが、突然うまくいきました。なぜそれがヒックアップであるのかわからないが、他の誰かを助ける場合に試してみるために物事のリストにそれを追加したかった。

4
dizy

設定すると問題は解決しました

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

2
Karolyn

私は同じことをしていました—私のプロジェクトには2つのターゲットがありました(ProjectおよびProjectTest of GHUnit)。私のスキームがProjectに設定されたとき、<GHUnitIOS/GHUnit.h>のインポートは「レキシカルまたはプリプロセッサーの問題ファイルが見つかりません」の問題でした。しかし、スキームとして設定するとProjectTestで、すべてが正常でした。そのため、ProjectにもGHUnitIOS.frameworkを追加しました。

2
goodliving

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

1
cduhn

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

1
Joshua Nozzi

より多くのバリアントを追加する:foo.mビルドフェーズでCompile Sourceの2つのインスタンスがあり、それが何らかの原因でfoo.hの「ヘッダーが見つかりません」になりました。

1
freespace

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

1
Norman G

別の機会:

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

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

それは私のために働いた。おそらく、Archive(またはRelease)ディレクトリのビルドは、Debugのビルドで予想されるものとは非常に異なります。

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

XD

1

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

  1. XCodeを閉じて再起動しました
  2. XCodeを介して2つの新しいファイルを削除しました
  3. 再コンパイルに成功しました

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

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

0
g-dog