2011-02-01 9 views
5

私は複数のターゲットを持つプロジェクトを持っていますが、それぞれがかなり類似したバージョンのアプリケーションを作成しますが、イメージ資産とplistsは異なります。 plists/imagesのためには問題ありませんが、ShareKitとAppiraterのフレームワークを使用しています。これらのフレームワークには、#definesというヘッダファイルがあります。それぞれのバージョンでは、このヘッダーファイルの別のバージョンをインポートする必要があると思います。これは、各ターゲットによって作成された各アプリケーションごとに設定が異なるからです。Xcode - ターゲットに基づいて同じ名前の別のヘッダファイルをインポートする

だから、AはSHConfig.h とターゲットBが異なるSHConfig.h

を持っていた私は、目標に基づいて異なるヘッダをインポートするには、これらのフレームワークのソースを編集することができますが、私が来たときにそれは厄介だろうターゲットフレームワークをアップグレードします。

ターゲットに基づいて(同じ名前の)異なるヘッダーファイルをインポートするより良い方法はありますか?

答えて

5

異なるディレクトリにあると仮定して、各ターゲット内のヘッダー検索パスを設定して、正しいディレクトリを最初に配置します。

$(SRCROOT)/foo:$(HEADER_SEARCH_PATHS)のように設定することもできますが、必要かどうかはわかりません。

+1

を見つけるために動作しますが、彼らは別のディレクトリにする必要があります。 – ughoavgfhw

+1

Peterさん、ありがとうございました。提案された別の方法は、自分自身の "マスター" SHKConfig.hを作成し、#ifdefsを定義して他のファイルに渡すことでした。これにより、オーバーヘッドが最小限に抑えられ、ビルドツールへの依存度が低くなります。両方のソリューションが機能するようです。 – NeilInglis

+0

私はそれを正確に行い、うまくいきません。私は他のターゲットのフォルダ内のヘッダーを探すターゲットが1つあります。私は間違って何をやっているの? – refaelos

0

私が有用であると分かったのは、ヘッダー検索パスにCommonディレクトリ名を入れて、別の#importを使用することでした。私のディレクトリ構造はCommon/Views/v1とCommon/Views/v2でした。私はv1を1つのターゲットに、v2を別のものにしたかったのです。私の場合は

、私はヘッダ検索パスに使用される検索パスをした後

$(SRCROOT)/../Common/ 

、私が使用:

#import <Views/v2/ActivityIndicator.h> 

を第二のバージョンを必要に応じて、ターゲットでは(これは$を見つけます(SRCROOT)/../ Common/Views/v2/ActivityIndi​​cator.h)を参照してください。

奇妙なことに、他のターゲット(作成した最初のもの)は完全なパスを指定しなくても問題ありません。すなわち、

#import "ActivityIndicator.h" 

は、同じ名前を持つには、2つのファイルの場合$(SRCROOT)/../コモン/ビュー/ V1/ActivityIndi​​cator.h

関連する問題