1. 规则添加
在build文件中经常看到load(xxxxxxxxxx)类似行,这是为文件添加的规则,其是也是一个声明:
load("@build_bazel_rules_apple//apple:iso.bzl", "ios_application") 中告诉bazel要用build_bazel_rulers_apple这个库里的那个规则来编译相应的Target.(从apple:iso.bzl文件中加载内容)
对于如下代码:
cc_library(
name="universal_lib",
srcs=[
" "
]
hdrs=[
]
) 传达了以下信息:
1. name 行 该代码所在的target在编译成静态库后所叫的名字
2. srcs 行 告诉bazel哪些源文件需要编译
3. hdrs 行 哪些头文件是要公开的 cc_library是bazel内置编译指令
ios_application(
name=
bundle_id = "com.sunxxx.universal",
families=[ "iphone", "ipad",]
minimum_os_version="9.0",
infoplists= [":universal/Info.plist"],
visibility = ["//visibility:public"],
deps=[ ":universal_lib"], )
其中 name不用解释; build_id是app的唯一标识符; familier 支持iphone or ipad ;
minimum_os_version 最低支持版本; infoplists info.plist文件路径;visibility 该库对其他库是否可见;
deps 你依赖的静态库名字;
关于Bazel规则的介绍:
C / C++ Rules: https://docs.bazel.build/versions/master/be/c-cpp.html#c-c-rules
General Rules: https://docs.bazel.build/versions/master/be/general.html#genrule
其他: https://docs.bazel.build/versions/master/be/functions.html#package_group
https://blog.csdn.net/langb2014/article/details/54314501
规则列表: cc_binary cc_import cc_library cc_proto_library fdo_prefetch_hints
fdo_profile cc_test cc_toolchain cc_toolchain_suite
在apollo中常见的有 cc_binary cc_library cc_test
有filegroup(
name = " "
srcs = glob([ "data / * *", ]),
) 其中 data / * * 是在data目录下的0到多个目录 可以理解为目录通配符,若是一个"*"可理解为文件名字的通配符.