外部构建项目

您可以通过外部构建系统项目模板与 Xcode 搭配使用外部 Make 文件。可以修改这些文件以利用 Xcode 项目设置(例如 build 类型和位置),同时在单独使用时仍然很有用。

创建外部项目

如需创建新的外部构建项目,请在 Xcode 中选择“New->New Project...”对话框,然后选择“External Build System”模板。将项目放在目标 Makefile 所在的目录中。

添加 Xcode 构建设置

调用外部 build 时,Xcode 会为其构建设置定义环境变量。这些设置用于定义创建 build 文件的位置,以及编译器和链接器标记。我们使用 Make 的条件指令在 Xcode 调用 build 时修改 build。

在下例中,所设置的变量(如 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)