Sean Clark Hess
Sean Clark Hess

Reputation: 16059

Xcode - exclude files in a custom configuration - better way?

I'm trying to come up with a way to make it easy to switch out our "mock" data services and our live ones. Basically, we'll have live servers with real web services, but for whatever reason, a developer may want to load data from static files (file urls).

I figured I would solve this problem by creating categories that override the methods that fetch the data, thus leaving original code untouched (it has no concept of the "mock" data). I don't want to litter my code with #ifdef.

I can put an #ifdef at the very beginning of each file that has categories in it, and I can set a custom flag in the configuration settings, but I'd rather just have a way to include or exclude the files depending on the configuration. Is that possible? How do you solve this problem?

Upvotes: 16

Views: 10629

Answers (3)

doozMen
doozMen

Reputation: 730

If you would like to add a file but do not wont to compile it. Go to (for all your targets) project>build phases>compile source and take out the file that you do not want to compile.

Upvotes: 1

cdespinosa
cdespinosa

Reputation: 20799

See http://lists.apple.com/archives/xcode-users/2009/Jun/msg00153.html

The trick is to define EXCLUDED_SOURCE_FILE_NAMES in the configuration you want to exclude the files from, and set the value of that custom build setting to a list of the file names (or a pattern that matches those, and only those, file names).

Upvotes: 35

TechZen
TechZen

Reputation: 64428

I would recommend creating two targets one of which has the mock categories included and another one which does not.

When you want to test, just build the target containing the mock categories. Everything else can remain identical.

Upvotes: 2

Related Questions