iOS サブプロジェクトを含む OSX プロジェクトがあります。サブプロジェクトは UIKit.h を使用しますが、サブプロジェクトの UIKit フレームワークがライブラリとのリンク バイナリ セクションに追加されていても、次のようなエラーが表示されます。
レキシカルまたはプリプロセッサの問題エラー UIKit/UIKit.h ファイルが見つかりません
どうすればこれを解決できますか?
条件付きコンパイルが必要なだけのように聞こえます:
ソース コードを共有する OSX と iOS の両方でビルドするプロジェクトがあります。SysInfo.h
これを上部に持つヘッダーファイルがあります:
#import <TargetConditionals.h>
#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
#define SYSINFO_OSX 1
#else
#define SYSINFO_IOS 1
#endif
(ここに関係のない他のものと同様に)
そして、次のように使用できます。
#import "SysInfo.h"
#ifdef SYSINFO_OSX
#import <Cocoa/Cocoa.h>
#else // !SYSINFO_OSX
#import <UIKit/UIKit.h>
#endif // SYSINFO_OSX
もちろん、これは氷山の一角にすぎません。ほぼ同じアプローチを使用して、適切なプラットフォームで適切な API を確実に使用する必要があるからです。