告诉Xcode忽略某些目标的标题?

时间:2011-01-02 22:37:07

标签: xcode macos ios header target

我有一个带有mac目标和iOS目标的Xcode项目。该项目包含一个类IPhoneOnlyClass,仅在iOS目标中使用。我从mac目标中取消选中了IPhoneOnlyClass.m,因此它不会编译该文件。

现在IphoneOnlyClass.h包含行

#import <GameKit/GameKit.h>

当我编译mac目标时,Xcode给了我一个错误:

错误:GameKit / GameKit.h:没有这样的文件或目录

我可以使用#ifdef解决这个问题,但还有更好的方法吗?在编译mac目标时,我宁愿告诉Xcode完全忽略标题。

3 个答案:

答案 0 :(得分:3)

您不应该首先在Mac特定或多平台源文件中导入仅限iPhone的类标题。

如果这是不可避免的,那么您将需要使用预处理器宏(例如TARGET_OS_MAC与TARGET_OS_IPHONE)来确定何时为仅iPhone类导入标头。

此外,请确保您没有意外地将任何仅限iPhone的类添加到Mac目标的Compile Sources构建阶段。

答案 1 :(得分:0)

我不认为#ifdef是不好的解决方案。如果您查看UIKit头文件,您会看到Apple使用了很多“#if”,例如:

#if __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED

#if TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)

(最后一行是从NSObjCRuntime.h复制的)

答案 2 :(得分:-2)

您需要将框架添加到Xcode项目中。

Frameworks / Linked Frameworks, Add -> Existing Frameworks

了解更详细的信息,只需谷歌add framework to xcode