बाहरी बिल्ड प्रोजेक्ट

Xcode के साथ बाहरी मेक फ़ाइलों का इस्तेमाल, बाहरी बिल्ड सिस्टम प्रोजेक्ट टेंप्लेट का इस्तेमाल करके किया जा सकता है. इन फ़ाइलों में Xcode प्रोजेक्ट की सेटिंग, जैसे कि बिल्ड टाइप और जगह की जानकारी का फ़ायदा लेने के लिए बदलाव किया जा सकता है. साथ ही, अलग से इस्तेमाल किए जाने पर भी इनका इस्तेमाल किया जा सकता है.

बाहरी प्रोजेक्ट बनाएं

नया बाहरी बिल्ड प्रोजेक्ट बनाने के लिए, Xcode में नया->नया प्रोजेक्ट... डायलॉग चुनें. इसके बाद, बाहरी बिल्ड सिस्टम टेंप्लेट चुनें. प्रोजेक्ट को उसी डायरेक्ट्री में रखें जिसमें टारगेट मेकफ़ाइल है.

Xcode बिल्ड सेटिंग जोड़ें

किसी बाहरी बिल्ड को इस्तेमाल करने के लिए, Xcode अपनी बिल्ड सेटिंग के लिए एनवायरमेंट वैरिएबल तय करता है. ये सेटिंग तय करती हैं कि बिल्ड फ़ाइलें कहां बनाई जाएंगी. साथ ही, ये कंपाइलर और लिंकर फ़्लैग भी तय करती हैं. बिल्ड को बदलने के लिए, हम 'मेक' के शर्त वाले डायरेक्टिव का इस्तेमाल करते हैं. ऐसा तब होता है, जब Xcode से इसे शुरू किया जाता है.

यहां एक उदाहरण दिया गया है, जहां सेट किए जाने वाले वैरिएबल (जैसे कि BUILD_DIR) आप अपनी पसंद का कोई भी नाम रख सकते हैं, जबकि कंडीशनल, एनवायरमेंट वैरिएबल Xcode सेट का इस्तेमाल करते हैं:

ifdef CONFIGURATION_BUILD_DIR
# In Xcode build
BUILD_DIR = $(CONFIGURATION_BUILD_DIR)/build
ARCHFLAGS = $(ARCHS:%=-arch %)
SDKFLAGS = -isysroot $(SDKROOT)
else
# In command-line build
BUILD_DIR = $(HOME)/build
ARCHFLAGS =
SDKFLAGS =
endif

ifdef OPTIMIZATION_LEVEL
DEBUGFLAGS := $(DEBUGFLAGS) -O$(OPTIMIZATION_LEVEL)
endif

ifdef OTHER_CFLAGS
DEBUGFLAGS := $(DEBUGFLAGS) $(OTHER_CFLAGS)
endif

# Workaround for iPhoneSimulator SDK's gcc bug
ifdef EFFECTIVE_PLATFORM_NAME
ifneq ($(EFFECTIVE_PLATFORM_NAME), -iphonesimulator)
WARNINGS := $(WARNINGS) -Wreturn-type
endif
endif

J2OBJCC_FLAGS = $(WARNINGS) $(SDKFLAGS) $(ARCHFLAGS) $(DEBUGFLAGS)
J2OBJCC = $(J2OBJC_DIST)/j2objcc $(J2OBJCC_FLAGS)