iOS Rules for Bazel
⚠️ This is alpha software. We are developing these rules in the open so you should only use them if you know what you are doing and are willing to help develop them.
These rules provide some macros and rules that make it easier to build iOS
application with Bazel. The heavy lifting of compiling, and packaging is
still done by the existing
objc_library
rule
in Bazel, and by the
swift_library
rule
available from rules_swift.
These rules require Bazel 2.0.
Click here for the documentation.
Add the following lines to your WORKSPACE
file. Note that since rules_swift
and rules_apple
no longer create
releases, the versions are
hardcoded to commit sha's that are known to work. You can see the particular
commit sha's in
repositories.bzl
.
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
git_repository(
name = "build_bazel_rules_ios",
remote = "https://github.com/ob/rules_ios.git",
branch = "master",
)
load(
"@build_bazel_rules_ios//rules:app.bzl",
"ios_application"
)
rules_ios_dependencies()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
Minimal example:
load("@build_bazel_rules_ios//rules:app.bzl", "ios_application")
ios_application(
name = "iOS-App",
srcs = glob(["*.m"]),
bundle_id = "com.example.ios-app",
entitlements = "ios.entitlements",
families = [
"iphone",
"ipad",
],
launch_storyboard = "LaunchScreen.storyboard",
minimum_os_version = "12.0",
visibility = ["//visibility:public"],
)
See the examples directory for sample applications.