Project: /_project.yaml Book: /_book.yaml
{% include “_buttons.html” %}
This page contains resources that help you use Bazel to build macOS and iOS projects. It links to a tutorial, build rules, and other information specific to using Bazel to build and test for those platforms.
The following resources will help you work with Bazel on macOS and iOS projects:
If you currently build your macOS and iOS projects with Xcode, follow the steps in the migration guide to start building them with Bazel:
Note: Creating new rules is for advanced build and test scenarios. You do not need it when getting started with Bazel.
The following modules, configuration fragments, and providers will help you extend Bazel's capabilities when building your macOS and iOS projects:
Modules:
Configuration fragments:
Providers:
If your build requires Xcode, Bazel will select an appropriate version based on the --xcode_config
and --xcode_version
flags. The --xcode_config
consumes the set of available Xcode versions and sets a default version if --xcode_version
is not passed. This default is overridden by the --xcode_version
flag, as long as it is set to an Xcode version that is represented in the --xcode_config
target.
If you do not pass --xcode_config
, Bazel will use the autogenerated XcodeVersionConfig
that represents the Xcode versions available on your host machine. The default version is the newest available Xcode version. This is appropriate for local execution.
If you are performing remote builds, you should set --xcode_config
to an xcode_config
target whose versions
attribute is a list of remotely available xcode_version
targets, and whose default
attribute is one of these xcode_versions
.
If you are using dynamic execution, you should set --xcode_config
to an xcode_config
target whose remote_versions
attribute is an available_xcodes
target containing the remotely available Xcode versions, and whose local_versions
attribute is an available_xcodes
target containing the locally available Xcode versions. For local_versions
, you probably want to use the autogenerated @local_config_xcode//:host_available_xcodes
. The default Xcode version is the newest mutually available version, if there is one, otherwise the default of the local_versions
target. If you prefer to use the local_versions
default as the default, you can pass --experimental_prefer_mutual_default=false
.