2013-02-15 9 views
10

これは私が試したことです。2つのターゲット、同じ名前の2つのヘッダーファイル正しいターゲットに各ヘッダーを使用する方法?

私は2つの別々のディレクトリIRLにヘッダファイルを持っています。それらは同じ名前が付けられていますが、2つの異なる場所にあります。

ターゲットごとに関連するヘッダーファイルのみを含めたいとします。説明を簡単にするために、ヘッダーファイルは "Config.h"と呼ばれます。

だから私は持っている:

$ {} PRODUCT_DIR /Header1/Config.h

$ {} PRODUCT_DIR /Header2/Config.h

これらのファイルは、XcodeのLHSにも2つの異なるグループ(Heade r1とHeader2はIRLフォルダを指します)。

だから、私はXcodeが各ターゲットの正しいフォルダから正しいものを選ぶようにするだけでいいです。

ターゲット2

ターゲット2

私は、ターゲットごとにUser Header Search Pathsへのパスを追加しようとしているが、そのはまだ間違ったものを選択します。また、「常にユーザーのパスを検索する」というトグルを試みましたが、これも効果がないようです。

私の質問は、Projectディレクトリにあるためですか?あるいは、LHS上のファイルマネージャのXcodeに入っているので、Xcodeはそれらをビルドフォルダにコピーしていますか?

奇妙なことは、私はあなたがビルドにコピーするためにどのヘッダを選択することができます確信しているのXcodeの以前のバージョンでは

...それはアルファベット順に最後の名前のフォルダからヘッダファイルを選択しているように見えるですフォルダ。

とにかく誰にでも、私はこれを修正してターゲットの適切なヘッダーファイルを選択できるようになりますか?

多くのありがとうございます。

+0

条件付きインポートはどうですか? –

+0

これはバックアップ計画です。 :)しかし、それはこの方法より多くのステップを追加します。私はこれが可能でなければならないと確信しています。 –

+0

1.実際に私は "ヘッダー検索パス"に問題がある理由を理解できません。これらのヘッダーをプロジェクトから除外し、 "**"再帰的検索パスを使用しないようにしてください。 2.私は通常、 "ifdef else"とは異なる "include"を使用します。したがって、どのグローバル変数をどのターゲットに追加しても、それを含めるかどうかを確認することができます(例:ifdef target1 #include "header1.h" else #include "header2.h" endif;)。 – Jlexyc

答えて

8

私が持っていた問題が2倍であった:あなたがプロジェクトからヘッダファイルを削除する必要が

  1. 。それらがXcodeにある場合、ファイルマネージャで自動的にプロジェクトに追加されます。

  2. "ユーザーヘッダー検索パス"でフォルダへの相対パスを使用する必要があります。私は正しい道を与えた${PROJECT_DIR}/path/to/header/folderを使っていましたが、正しく動作していないようです。代わりにエントリを./path/to/header/folderに変更しても問題ありません。 YESに

    Always Search user Paths 
    

    全てました:

+0

フレームワークを構築しているのでヘッダーをプロジェクトから削除できない場合、どうすればそれらがパブリックヘッダーになりますか? –

0

私は最善の解決策は、次のタグを変更だと思うのXCode 8 で最高のソリューション、1つのproyectで4つのターゲットと40の以上のヘッダを持っています私のためにうまくいく: enter image description here

関連する問題