2009-07-07 13 views
5

私はClint Harris' tutorialを使用してプロジェクト間のコード共有をセットアップしました。しかし、私の同僚のマシンでは、ビルド時にコンパイラが静的ライブラリプロジェクトからヘッダファイルを見つけられないようです。スタティックライブラリヘッダーが見つからないのはなぜですか?

私の同僚はgitリポジトリをクローンして自分のプロジェクトを手に入れました。私たちはすべての関連するビルドフラグとXCode設定をn回実行しましたが、プロジェクトは単に自分のマシンでコンパイルを拒否します。

これはほとんどのチュートリアルからコピーして貼り付け、私がやって私の同僚に尋ねたものです:

  1. は、プロジェクトのディレクトリへの完全なパスに空白がないことを確認してください。
  2. projectsディレクトリ内に、「build_output」という別のフォルダを作成します。
  3. XCodeでは、[XCode]環境設定で[ビルド]タブを選択し、[ビルドプロジェクトを配置]を[カスタマイズされた場所]に設定し、作成した共通のビルドディレクトリへのパスを指定します。
  4. 「ビルドプロダクトを使用する」に「中間ビルドファイルを配置」を設定します。
  5. 「ソースツリー」タブを選択し、「+」ボタンをクリックして列を入力して新しいソースツリー変数を作成します。 "Setting Name"と "Display Name"の両方に、 [静的ライブラリを作成した共有プロジェクトの名前]を入力します。パスでは、フルパスをフレームワークフォルダに置きます。

これらの手順を実行すると、静的ライブラリを使用するプロジェクトでは、自分のマシンで同じようにコンパイルする必要があります。しかし、それはしません。基本的に、彼は次のエラーを受け取ります:

error: TheFrameworkHeader.h: No such file or directory 

そして、欠落したヘッダーによって引き起こされる他のエラーの文字列です。

これをトラブルシューティングする方法はありますか?または同様の経験を持ち、困難な知識を共有できる人は誰ですか?私が要約した指示に何かが欠けていますか?静的ライブラリをコンパイルするときに、ヘッダーのビルドフェーズでヘッダーの役割を設定する必要がありますか?

答えて

8

私はこれを理解したことはありませんでしたが、同様の状況の人には少し知っています。オリジナルのpを分割して、 2つに移動します。最初は、ライブラリとアプリケーションは同じプロジェクト内の2つのターゲットに過ぎませんでした。その後、私は別のプロジェクトにアプリを移動しました。すべてがうまくいくように見え、両方のプロジェクトをリモートのgitリポジトリにプッシュしました。しかし、これらが他のコンピュータで複製されたときには、ライブラリヘッダーが見つかりませんでした。

後で、元のコンピュータにプロジェクトをクローンしたときに同じエラーが発生したことがわかりました。多くの苦労の末、私はそれを一つの恐ろしい細部に固定しました:従属プロジェクトのフォルダの名前!(すなわち、ライブラリではなく、アプリケーションを含むプロジェクト).xcodeprojectパッケージの名前ではなく、アプリケーション識別子ではなく、というフォルダを含むの名前です。私がそれを変えるとすぐに、すべてが機能します。元の名前(どのコンピュータでも)に戻しても、ヘッダーは見つかりません。

誰もがこれに関する洞察を持っている場合は、回答を投稿してください!

EDIT:これを投稿して以来、別のプロジェクトで同じ問題が発生しましたが、.xcodeprojectフォルダを含むフォルダの名前を変更するだけで問題は解決しました。

+0

私はちょうど同じことが起こった。 'ChineseZodiac' ==悪い'ゾディアック' ==良い。 WTF? –

+0

それは私たちの3人になります。たぶんバグを報告する時間。 – Felixyz

+0

+1私の頭痛を治すため。 – hwaxxer

0

特定のマシンでビルドするのに問題がある場合は、マシンまたはユーザーの設定に問題がある可能性があります。 environment variableなど(おそらくINCLUDE_PATHまたはその親戚の1つ - XCodeはGCCを使用します)。あなたは "。"これらの変数のいずれかになります。

これを修正する最善の方法は、ビルドスクリプトの-Iスイッチに必要なフォルダパスを追加することです。

+0

Xcodeのターゲットでビルドパネルを使って、 "User Header Search Paths"を正しく設定しました。 Xcodeの設定のソースツリー設定で)、それが私の開発ボックスで動作するようにしたのです。 (私はまた、 "Other Linker Flags"を-ObjCに設定しました)。私は今、これを3台目のコンピュータで試しましたが、それが動作する唯一のものはオリジナルのdevboxです。 – Felixyz

0

私はこのチェックを忘れることがよくあります:欠けているファイル(つまり、TheFrameWorkHeader.hはgitリポジトリにありますか?ビルドの設定は正しいかもしれませんが、ファイルはどうにか追加されませんでした

+0

いいえ、リポジトリにチェックインされています。 – Felixyz

0

"検索パス - >ユーザーヘッダー検索パス"ビルド設定(すべての構成用)が共有Xcodeプロジェクトを含むディレクトリを指していることを再度確認します(作成した新しいソースツリー変数を使用できます)

+0

多くのおかげさまですが、私はすでにこれと他のすべての考えられる設定を十数回確認していました。私はまだ何が間違っていたのか分からないが、少しの情報を共有するために質問を編集する。 – Felixyz

+0

代わりに新しい回答が追加されたので、質問には未回答としてマークされません。 – Felixyz

2

私はそれがGitだとは思わない、私はそれがxcodeだと思う。 xcode/xcodebuildがインクルードパスを間違って解決する(これをシンプルにしています)。同じライブラリプロジェクトとxcconfigファイル(svn repoからのきれいなチェックアウト)で、別のフォルダを含んでいます。だから、解決策はありがとう、もうGitを非難しない;-)

+0

いいえ、gitはもう容疑者の1人ではありません:) xcodeが混乱の原因になるのはまだ不明です。プロジェクトファイルには何らかのメタ情報が必要ですか? – Felixyz

関連する問題