2015-11-13 9 views
15

私のプロジェクト用のフレームワークを作ろうとしています。私のフレームワークでは、ヘッダファイルのパスをターゲット>ビルド設定>ヘッダ検索パスに追加しました。その後、私はこのフレームワークを私のプロジェクトにBuild Phases> Link Binary with Librariesで追加しました。Xcodeでヘッダーファイルが見つかりません

フレームワークに含まれているヘッダーファイルをインポートするときに、.hファイルが見つかりません。エラー。私がしようとしていることは可能ですか?それとも私は何かが欠けている?

このようなフレームワークを作成しました。 iOS版>フレームワーク&ライブラリとして

オープンの新しいプロジェクト>ココアタッチフレームワーク 私は、任意のクラス、私だけで付加されたヘッダ検索パスとライブラリの検索パスとリンカのフラグを追加しませんでした。私はこの部分で間違いを犯したとは思えません。なぜなら、私たちはすべてのプロジェクトでそれをやっているからです。その後、私は実行を押して、製品から自分のフレームワークを取得します。

私のプロジェクトを開き、フレームワークのビルドフェーズ>ライブラリとバイナリをリンクしました。 #import <myframework/framework.h> のようなフレームワークのヘッダーファイルをインポートすることができました。この後、私はフレームワークもGeneral> Embedded Binariesに追加しました。すべて正常に見えますが、ヘッダー検索パスを含むフレームワークに含まれているプロジェクトにヘッダーを追加することはできません。私はヘッダー検索パスを使用する必要があります。なぜなら、たくさんのヘッダーがあるため、それらをすべてXcodeに追加することはできません。

+1

ヘッダーがフレームワーク内にある場合、ヘッダー検索パスを設定する必要はありませんか?しかし、 '#import'文でヘッダーの名前を正しく指定する必要があります(' #import ')。 – trojanfoe

+0

別のパスには多くのヘッダーがあります。私は残念なことにヘッダー検索パスを使用する必要があります。会社規則の種類。ご意見ありがとうございます。 –

+1

フレームワークの作成方法とインポートの正確さについて詳しく説明できますか? – arturdev

答えて

18

あなたのすべてのパブリック・ヘッダーが公開節他のドラッグに表示されていることを確認して、公共 enter image description here

+0

Xcodeのヘッダファイルはありません。別のフォルダに置かれ、ヘッダ検索パスからのパスしか表示されません。たくさんのヘッダファイルがありますので、それらすべてをドラッグしてXcodeにドロップすることはできません。 –

+1

Frameworkプロジェクトの公開セクションのヘッダファイルをドラッグするだけで、フレームワークを含める必要があります。 –

+0

Huzzah!とても簡単!ありがとう! –

2

すべてに.hファイルをドロップ正常に見えるが、私は、ヘッダーと私のフレームワークに含ま私のプロジェクトにヘッダを追加することはできません。検索パス。

あなたが検索パスにSomeHeader.hというヘッダがあるかどうように、あなたのヘッダ検索パスで指定されたパスで見つけることができるすべてのヘッダーは、あなたのフレームワークの一部となります期待しているかのように聞こえます、あなたのフレームワークに組み込まれ、クライアントプロジェクトにインポートすることができます:

#import <MyFramework/SomeHeader.h> 

しかし、それは全くありません。フレームワークにSomeHeader.hを提供する場合は、そのファイルをプロジェクトに追加する必要があります.Mehghs Dhameliyaは既に指摘したように、ヘッダ構築フェーズの公開ヘッダ部分にSomeHeader.hを指定する必要があります。これにより、フレームワークのクライアントがヘッダファイルをインポートできるように、Xcodeがヘッダファイルをフレームワークにコピーします。それはそれはあなたが本当にあなたが書いたコメントで...しかし、欲しいものだということは明らかではありません。

ヘッダの多くは別のパスにあります。私は残念なことにヘッダー検索パスを使用する必要があります。会社規則の種類。

社内のすべてのプロジェクトで同じヘッダー検索パスを指定しているため、これらのヘッダーファイルにアクセスできるようです。それが本当であれば、あなたのフレームワークからのプロジェクトは#importにする必要はありませんが、実際の問題が何であるかは明らかではありません。または、おそらく、クライアントプロジェクトがヘッダー検索パスを参照する代わりに、フレームワークからヘッダーを取得できるように、フレームワークを作成しています。その場合は、これらのヘッダをプロジェクトに追加し、上記のようにヘッダを指定する必要があります。

+0

Caleb、はい、私たちは多くのヘッダーとライブラリを持っています。クライアントと共有すると、ヘッダー検索パスやリンカーフラグを混乱させ、通常は忘れてしまいます。だから私はこれをすべて持っているフレームワークを作成し、クライアントとフレームワークだけを共有したい。私はそれが可能かどうかを学ぶことを試みている。再度、すべてのヘッダーは同じ指定されたパスにあります。そこからヘッダー検索パスを使用しなければなりません。すべての終わりに、私はそれがヘッダー検索パスから可能ではありません。 –

+0

@yucelbayramヘッダー検索パスは、ヘッダーを*ソースファイルに '#import 'するだけでコンパイラがコンパイルするのに必要なすべての定義などを持つようにする必要がある場合に使用できます。ヘッダーファイル自体を実際にフレームワークに組み込み、クライアントプロジェクトで '#import'を利用できるようにしたいので、プロジェクトに追加する必要があります。 – Caleb

関連する問題