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")

参考

class XcodeBuild(conanfile)
__init__(conanfile)
XcodeBuild.build(xcodeproj, target=None)

调用 xcodebuild 来构建 Xcode 项目。

参数:
  • xcodeproj – 要构建的 xcodeproj 文件。

  • target – 要构建的目标,如果此参数传递给 build() 方法,它将向构建系统调用添加 -target 参数。如果未传递,则会构建所有目标,并传递 -alltargets 参数。

返回值:

启动的 xcodebuild 命令的返回码。

Xcode.build() 方法内部实现了对 xcodebuild 的调用,例如:

$ xcodebuild -project app.xcodeproj -configuration <configuration> -arch <architecture> <sdk> <verbosity> -target <target>/-alltargets

其中:

  • configuration 是配置,通常是 ReleaseDebug,将从 settings.build_type 中获取。

  • architecture 是构建架构,是将 settings.arch 映射到 Apple 定义的常见架构,如 ‘i386’、‘x86_64’、‘armv7’、‘arm64’ 等。

  • sdk 是根据 os.sdkos.sdk_version 的值设置的,它们定义了相应的 SDKROOT Xcode 构建设置。例如,设置 os.sdk=iOSos.sdk_version=8.3` 会将 SDKROOT=iOS8.3 传递给构建系统。如果您在 [conf] 中定义了 tools.apple:sdk_path,则此值优先,并将直接传递 SDKROOT=<tools.apple:sdk_path>,因此请注意,在这种情况下,该路径中的 SDK 应该设置您的 os.sdkos.sdk_version 设置值。

  • verbosity 是构建的详细程度,如果由您的 [conf] 中的 tools.build:verbosity 设置,可以取值 ‘verbose’ 或 ‘quiet’。

conf

  • tools.build:verbosity(或作为备选的 tools.compilation:verbosity)接受 quietverbose,并在 XcodeBuild.build() 中设置 -verbose-quiet 标志。

  • tools.apple:sdk_path SDK 位置的路径,将优先于通过 os.sdkos.sdk_version 设置组合值来设置 SDKROOT 值。