私の Xcode プロジェクトは、2 つのターゲットを使用して同じ製品のバリエーションにビルドされます。2 つの違いは、含まれているライブラリのどのバージョンが使用されているかだけです。.c ソース ファイルの場合、ターゲット チェック ボックスを使用して、正しいバージョンを正しいターゲットに簡単に割り当てることができます。ただし、ヘッダー ファイルをインクルードすると、常に同じものがインクルードされます。これは 1 つのターゲットでは正しいですが、別のターゲットでは正しくありません。
各ターゲットに含まれるヘッダー ファイルを制御する方法はありますか?
これが私のプロジェクトファイル階層です(Xcodeで複製されています):
MyProject
TheirOldLib
theirLib.h
theirLib.cpp
TheirNewLib
theirLib.h
theirLib.cpp
myCode.cpp
そして myCode.cpp は次のようなことを行います:
#include "theirLib.h"
…
somecode()
{
#if OLDVERSION
theirOldLibCall(…);
#else
theirNewLibCall(…);
#endif
}
そしてもちろん、私は一方のターゲットを定義OLDVERSION
し、もう一方のターゲットを定義しません。
は示されているとおりでなければならないことに注意してください#include
。次の両方がファイルが見つからないというエラーで失敗します。
#include "TheirOldLib/theirLib.h"
#include "TheirNewLib/theirLib.h"
theirLib.h
ターゲットごとにどれを含めるかをXcode に指示する方法はありますか?
制約:
- 2 つのヘッダー ファイルは同じ名前です。最後の手段として、そのうちの 1 つの名前を変更することもできますが、これは他のプラットフォームで大きな影響を与えるので避けたいと思います。
-#include
囲んでいるフォルダーへの参照を追加するために を変更する必要があることも、条件付きコンパイル ディレクティブで 2 回行う必要があるため、むしろ避けたいことです。
- 私は自分のプロジェクトを自由に微調整できます。
助けてくれてありがとう。