XcodeBuild¶
XcodeBuild
构建助手是 Xcode 命令行调用的一个封装。它将抽象诸如 xcodebuild -project app.xcodeproj -configuration <config> -arch <arch> ...
这样的调用。
XcodeBuild
助手可以这样使用:
from conan import conanfile
from conan.tools.apple import XcodeBuild
class App(ConanFile):
settings = "os", "arch", "compiler", "build_type"
def build(self):
xcodebuild = XcodeBuild(self)
xcodebuild.build("app.xcodeproj")
参考¶
- XcodeBuild.build(xcodeproj, target=None, configuration=None, cli_args=None)¶
调用
xcodebuild
来构建一个 Xcode 项目。- 参数:
xcodeproj – 要构建的 _xcodeproj_ 文件。
target – 要构建的目标。如果此参数传递给
build()
方法,它将向构建系统调用添加-target
参数。如果未传递,它将构建所有目标,转而传递-alltargets
参数。configuration – 要使用的构建配置(例如,
Debug
、Release
)。默认为配方的settings.build_type
。cli_args – 要直接传递给
xcodebuild
的额外选项(字符串列表)。示例:["-xcconfig", "<path/to/file.xcconfig>"]
或自定义 Xcode 构建设置,如["BUILD_LIBRARY_FOR_DISTRIBUTION=YES"]
。
- 返回:
启动的
xcodebuild
命令的返回码。
XcodeBuild.build()
方法在内部实现了一个类似以下的 xcodebuild
调用:
$ xcodebuild -project app.xcodeproj -configuration <configuration> -arch <architecture> <sdk> <verbosity> -target <target>/-alltargets *_DEPLOYMENT_TARGET=settings.os.version <cli_args>
其中
configuration
是配置,通常是 _Release_ 或 _Debug_,除非通过configuration
参数显式传递,否则将从settings.build_type
获取。architecture
是构建架构,从settings.arch
映射到 Apple 定义的常见架构,如 ‘i386’、‘x86_64’、‘armv7’、‘arm64’ 等。sdk
是根据os.sdk
和os.sdk_version
的值设置的,定义了相应的SDKROOT
Xcode 构建设置。例如,设置os.sdk=iOS
和 os.sdk_version=8.3` 将把SDKROOT=iOS8.3
传递给构建系统。如果您在 **[conf]** 中定义了tools.apple:sdk_path
,该值将优先,并直接传递SDKROOT=<tools.apple:sdk_path>
,因此 **请注意**,对于这种情况,位于该路径的 SDK 应该设置您的os.sdk
和os.sdk_version
设置值。verbosity
是构建的详细程度级别,如果通过您 **[conf]** 中的tools.build:verbosity
设置,则可以取值为 ‘verbose’ 或 ‘quiet’。cli_args
是通过cli_args
参数传递的附加命令行参数。这些参数可以包括自定义构建设置,例如BUILD_LIBRARY_FOR_DISTRIBUTION=YES
。您还可以通过传递SYMROOT
和OBJROOT
设置来将构建构件重定向到 Conan 构建文件夹。def build(self): xcodebuild = XcodeBuild(self) xcodebuild.build("app.xcodeproj", cli_args=[f"SYMROOT={self.build_folder}", f"OBJROOT={self.build_folder}"])
传递给 xcodebuild
的附加参数(但在 cli_args
之前)。
根据配置文件中的
os
和os.version
值设置的部署目标,例如MACOSX_DEPLOYMENT_TARGET=10.15
或IPHONEOS_DEPLOYMENT_TARGET=15.0
。
conf¶
tools.build:verbosity
(或回退的tools.compilation:verbosity
),它接受quiet
或verbose
,并为XcodeBuild.install()
设置-verbose
或-quiet
标志。tools.apple:sdk_path
SDK 位置的路径,将优先设置SDKROOT
值,而不是从os.sdk
和os.sdk_version
设置组合值。