William Jockusch
William Jockusch

Reputation: 27295

Tell Xcode to ignore a header for some targets?

I have an Xcode project with a mac target and an iOS target. The project contains a class IPhoneOnlyClass which is used in the iOS target only. I have unchecked IPhoneOnlyClass.m from the mac target so it doesn't compile that file.

Now IphoneOnlyClass.h contains the line

#import <GameKit/GameKit.h>

When I am compiling for the mac target, Xcode gives me an error:

error: GameKit/GameKit.h: No such file or directory

I could get around this with a #ifdef, but is there a better way? I'd rather tell Xcode to ignore the header altogether when compiling the mac target.

Upvotes: 2

Views: 2030

Answers (3)

Cesar A. Rivas
Cesar A. Rivas

Reputation: 1355

you need to add the framework to your Xcode project.

Frameworks / Linked Frameworks, Add -> Existing Frameworks

for more detailed info, just google add framework to xcode

Upvotes: -1

Gu1234
Gu1234

Reputation: 3506

I don't think #ifdef are bad solution. If you look at UIKit header files you will see Apple use a lot of "#if" such as:

#if __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED

And

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

(Last line was copied from NSObjCRuntime.h)

Upvotes: 0

Chris Hanson
Chris Hanson

Reputation: 55116

You should not be importing the iPhone-only class headers in your Mac-specific or multi-platform source files in the first place.

If that's unavoidable, then you'll need to use a preprocessor macro, such as TARGET_OS_MAC versus TARGET_OS_IPHONE, to determine when to import the headers for your iPhone-only classes.

Also, make sure you haven't accidentally added any iPhone-only classes to the Compile Sources build phase of your Mac target.

Upvotes: 2

Related Questions