Projetos de compilação externos

Os arquivos do make externos podem ser usados com o Xcode por meio de um modelo de projeto do sistema de build externo. Esses arquivos podem ser modificados para aproveitar as configurações do projeto Xcode, como o tipo de build e o local, embora ainda úteis quando usados separadamente.

Criar um projeto externo

Para criar um novo projeto de build externo, no Xcode, selecione a caixa de diálogo New->New Project... e escolha o modelo "External Build System". Coloque o projeto no mesmo diretório que o Makefile de destino.

Adicionar configurações do build do Xcode

Ao invocar um build externo, o Xcode define variáveis de ambiente para as configurações de build. Essas configurações definem onde os arquivos de build são criados, assim como as sinalizações do compilador e do vinculador. Usamos as diretivas condicionais do Make para modificar o build quando ele é invocado pelo Xcode.

Veja um exemplo em que as variáveis que estão sendo definidas (como BUILD_DIR) podem ser qualquer nome que você queira, enquanto as condicionais usam as variáveis de ambiente definidas para o conjunto do 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)