Externe Build-Projekte

Externe make-Dateien können mit Xcode mithilfe einer externen Build-System-Projektvorlage verwendet werden. Diese Dateien können geändert werden, um Xcode-Projekteinstellungen wie den Build-Typ und den Speicherort zu nutzen. Sie sind aber auch bei separater Verwendung nützlich.

Externes Projekt erstellen

Wählen Sie zum Erstellen eines neuen externen Build-Projekts in Xcode das Dialogfeld New->New Project... und dann die Vorlage External Build System aus. Legen Sie das Projekt im selben Verzeichnis wie das Ziel-Makefile ab.

Xcode-Build-Einstellungen hinzufügen

Beim Aufrufen eines externen Builds definiert Xcode Umgebungsvariablen für seine Build-Einstellungen. Mit diesen Einstellungen wird festgelegt, wo Build-Dateien erstellt werden und welche Compiler- und Verknüpfungs-Flags erstellt werden. Wir verwenden bedingte Anweisungen von Make, um den Build zu ändern, wenn er von Xcode aufgerufen wird.

Im folgenden Beispiel können die festzulegenden Variablen (z. B. build_DIR) einen beliebigen Namen haben, während die Bedingungen die Umgebungsvariablen verwenden, die von Xcode festgelegt wurden:

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)