XcodeBuild¶
The XcodeBuild 构建助手是 Xcode 命令行调用的包装器。它将抽象诸如 xcodebuild -project app.xcodeproj -configuration <config> -arch <arch> ... 之类的调用。
The 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命令的返回码。
The 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,将从settings.build_type获取,除非您通过configuration参数显式传递它。architecture是构建架构,是将settings.arch映射到 Apple 定义的常见架构 ‘i386’、‘x86_64’、‘armv7’、‘arm64’ 等。sdk根据os.sdk和os.sdk_version的值设置,定义 Xcode 构建设置SDKROOT。例如,将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 之前)
根据 profile 中
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_pathsdk 位置的路径,将优先于从os.sdk和os.sdk_version设置组合值来设置SDKROOT值。