پروژه های ساخت خارجی

فایل های ساخت خارجی را می توان با Xcode، با استفاده از الگوی پروژه External Build System استفاده کرد. این فایل‌ها را می‌توان برای بهره‌گیری از تنظیمات پروژه Xcode، مانند نوع ساخت و مکان، تغییر داد، در حالی که در صورت استفاده جداگانه همچنان مفید هستند.

ایجاد یک پروژه خارجی

برای ایجاد یک پروژه ساخت خارجی جدید، در Xcode گفتگوی New->New Project... را انتخاب کنید، سپس قالب External Build System را انتخاب کنید. پروژه را در همان دایرکتوری Makefile هدف قرار دهید.

تنظیمات Xcode Build را اضافه کنید

هنگام فراخوانی یک بیلد خارجی، Xcode متغیرهای محیطی را برای تنظیمات ساخت خود تعریف می کند. این تنظیمات محل ایجاد فایل های ساخت و همچنین پرچم های کامپایلر و لینکر را مشخص می کنند. ما از دستورالعمل‌های شرطی Make برای اصلاح بیلد زمانی که توسط Xcode فراخوانی می‌شود، استفاده می‌کنیم.

در اینجا یک مثال آورده شده است، که در آن متغیرهای در حال تنظیم (مانند BUILD_DIR) می توانند هر نامی که می خواهید باشند، در حالی که شرطی ها از متغیرهای محیطی Xcode set استفاده می کنند:

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)