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 是配置,通常为 *Release* 或 *Debug*,这将从 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”值

配置

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

  • tools.apple:sdk_path sdk 位置的路径,将使用优于从 os.sdkos.sdk_version 设置合成该值的偏好来设置 SDKROOT 值。