最近在项目中用到了bazel,这里记录下使用过程中的一些心得
bazel编译是通过识别当前目录下BUILD或者BUILD.bazel文件,大概长这样:
点击查看代码
package(default_visibility = ["//visibility:public"])
sh_binary(
name = "bootstrap_sh",
srcs = ["bootstrap.sh"],
data = [
"//tools/linux/scripts:start_base.sh",
"//system/linux/scripts:monitor_sh",
"//scripts:module_manager_sh",
],
)
py_binary(
name = "config_downloader_py",
srcs = [
"config_downloader.py",
],
data = [
"//config/system:config_mgmt",
],
main = "config_downloader.py",
deps = [
"//base/file/py:path",
],
)
py_test(
name = "config_downloader_test",
srcs = [
"config_downloader.py",
"config_downloader_test.py",
],
deps = [
":config_downloader_py",
"//base/file/py:path",
],
)
一个BUILD对应一有个package,也就是包的说法,然后它可能有父包、子包,如果一个目录不包含BUILD或BUILD.bazel文件,则它只是一个纯粹的目录,隶属于最近的父包(包含BUILD或BUILD.bazel文件)。
这里面sh_binary对应shell脚本的package,py_binary对应python文件的package,py_test对应python的测试文件package,还有很多其他类型,像cc_binary,cc_library
name字段对应想生成的package名字
srcs表示源文件
deps表示源文件用到了哪些依赖的package
data表示运行package时可能需要用到的一些数据文件,比如运行测试package时需要用到的数据文件
运行命令:
bazel build xxx/xxx/path
bazel run xxx/xxx:package_name
bazel test //scripts:config_downloader_test --sandbox_writable_path=/opt
因为bazel运行时一般是在沙箱中进行,会隔离本机环境,在沙箱中默认对本机环境的文件是只有可读权限的,如果需要写权限,可以通过--sandbox_writable_path参数指定,指定一个目录为可写目录,对该目录下所有子目录也是拥有读写权限的
标签:package,感受,py,bazel,BUILD,一点,config,downloader From: https://www.cnblogs.com/LuckyOven/p/17479607.html