2012-03-02 11 views
1

だから、ここでスクープです:iOSの - 別のXcodeプロジェクトでの静的ライブラリプロジェクトを含む...ヘッダの問題

私は標準ライブラリを構築するXcodeのプロジェクトを持っています。この標準ライブラリは、 ".a"ファイルを生成し、いくつかのヘッダファイルは、クライアントがlibを使用しているものに見えるようにする必要があります。

標準libには、設定されたディレクトリに作成します:

/builds/foo/bar/build/ 

私はライブラリを構築した後、このようになりますどの:

/builds/foo/bar/build/ 
    lib.a 
    headers/ 
     head1.h 
     head2.h 
     head3.h 

私はこのライブラリを消費する必要があるクライアントアプリケーションを持っています。クライアントアプリケーションのすべてのビルドで標準ライブラリを再構築する必要があるので、次のように設定します。

クライアントアプリケーションを作成し、標準のlib .xcodeprojファイルを追加して、直接の依存。リンクバイナリをライブラリに適切にリンクしました。次に、標準的なスーツに従って、クライアントアプリケーションをセットアップして、次の場所のヘッダーファイルを検索します。

/builds/foo/bar/build/headers/ 

これは機能します。上記のディレクトリを削除して再構築しようとすると、ヘッダファイルが見つからないため失敗します。

"さて、Duh!あなたはヘッダーファイルを含むディレクトリを削除しました!"

Trueですが、クライアントのビルド方法は、クライアントアプリケーションがビルドされる前に静的ライブラリがコンパイルされ、/ builds/foo/bar/buildディレクトリ(ヘッダーファイルを含む)に配置されるように設定されています。これらのヘッダーファイルを見つけるべきである(SHOULD)。クライアントがコンパイルされる前に存在し、「ヘッダー検索パス」が正しく設定されています。

前にも述べたように、libファイルとヘッダーファイルを含むディレクトリを削除して、クライアントアプリケーションのクリーンビルドを試みると失敗します。ビルドに失敗したにもかかわらず、/ builds/foo/bar/buildディレクトリが作成されて作成されます。これは、その後のビルドとクリーンがすべて成功することを意味します。

この問題を解決するにはどうすればよいですか?

+0

エラーメッセージは正確には何ですか? – lawicko

+0

レキシカルまたはプリプロセッサの問題: "head1.h"ファイルが見つかりません。 直接的な依存関係がコンパイルされる前に、この段階のチェックが行われていることは明らかです。それ以外の場合は問題にはなりません。 – Jeff

+0

ナー、直接の依存関係**は、チェックが行われる前に準備ができている必要があります。間違えていないかどうかを確認してください(ここでは、http://stackoverflow.com/questions/3429031/header-search-paths-vs- user-header-search-paths-in-xcode)が含まれています。 – lawicko

答えて

0

通常、Xcode 4は依存プロジェクトのビルドを正しく処理します。私はそれがない状況を見つけました。スキームを編集し、静的ライブラリの依存関係を明示的にすることができます。

関連する問題