Proyectos de compilación externos

Se pueden usar archivos Make externos con Xcode, mediante una plantilla de proyecto de sistema de compilación externo. Estos archivos se pueden modificar para aprovechar la configuración del proyecto de Xcode, como el tipo de compilación y la ubicación, y, aun así, son útiles cuando se usan por separado.

Crear un proyecto externo

Para crear un nuevo proyecto de compilación externo, en Xcode, selecciona el diálogo New->New Project... y, luego, selecciona la plantilla External Build System. Coloca el proyecto en el mismo directorio que el archivo Make de destino.

Agrega parámetros de configuración de compilación de Xcode

Cuando invocas una compilación externa, Xcode define variables de entorno para su configuración de compilación. Esta configuración define dónde se crean los archivos de compilación, además de las marcas del compilador y el vinculador. Usamos las directivas condicionales de Make para modificar la compilación cuando Xcode la invoca.

En este ejemplo, se muestra cómo las variables que se establecen (como BUILD_DIR) pueden tener el nombre que desees, mientras que los condicionales usan las variables de entorno que se establecen en 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)