在golang项目开始使用Bazel

栏目: Go · 发布时间: 5年前

内容简介:推荐通过

在golang项目开始使用Bazel

Bazel 是一个由 java 编写的编译工具,支持多语言编译,扩展,远程缓存等大量功能.

推荐通过 https://github.com/bazelbuild/bazel/releases 下载,

wget https://github.com/bazelbuild/bazel/releases/download/0.24.1/bazel-0.24.1-installer-linux-x86_64.sh

由于大家都知道的原因,下载速度很慢.建议在国外服务器下载

快速开始

Bazel 使用两个特殊文件名 WORKSPACEBUILD 定义项目.

WORKSPACE 定义一个项目工作区,例如外部依赖和 工具 链, BUILD 定义如何编译这个项目.允许用多个 BUILD 定义不同部分的编译操作.

在项目创建一个 WORKSPACE 文件.然后需要载入Bazel的golang扩展 .以下均为官方基础例子

# 载入http_archive函数
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

# 从github下载扩展
http_archive(
    name = "io_bazel_rules_go",
    urls = ["https://github.com/bazelbuild/rules_go/releases/download/0.18.3/rules_go-0.18.3.tar.gz"],
    sha256 = "86ae934bd4c43b99893fc64be9d9fc684b81461581df7ea8fc291c816f5ee8c5",
)

# 从下载的扩展里载入 go_rules_dependencies go_register_toolchains 函数
load("@io_bazel_rules_go//go:deps.bzl", "go_rules_dependencies", "go_register_toolchains")

# 注册一堆常用依赖 如github.com/google/protobuf golang.org/x/net
go_rules_dependencies()

# 下载golang工具链
go_register_toolchains()

一般来说都会使用gazelle工具来自动生成 BUILD 文件,而不是手写.添加以下加入 WORKSPACE

# 下载 gazelle
http_archive(
    name = "bazel_gazelle",
    urls = ["https://github.com/bazelbuild/bazel-gazelle/releases/download/0.17.0/bazel-gazelle-0.17.0.tar.gz"],
    sha256 = "3c681998538231a2d24d0c07ed5a7658cb72bfb5fd4bf9911157c0e9ac6a2687",
)

# 载入依赖
load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies")
gazelle_dependencies()

BUILD 文件写入

load("@bazel_gazelle//:def.bzl", "gazelle")

# 下面这行是必要的注释 注明了你的包前缀 例如github.com/example/project
# gazelle:prefix go-common
gazelle(name = "go-common")

然后运行

# 如果上面修改了名字 这里也需要修改
bazel run  //:gazelle

成功输出如下

INFO: 0 processes.
INFO: Build completed successfully, 1 total action
INFO: Build completed successfully, 1 total action

进行编译

bazel build //...

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

零边际成本社会

零边际成本社会

[美]杰里米·里夫金 / 赛迪研究院专家组 / 中信出版社 / 2014-11-1 / 49.00

在这本书中,《第三次工业革命》作者杰里米•里夫金开创性地探讨了极致生产力、协同共享、产消者、生物圈生活方式等全新的概念,详细地描述了数以百万计的人生产和生活模式的转变。他认为,“产消者”正在以近乎零成本的方式制作并分享自己的信息、娱乐、绿色能源和3D打印产品。他们也通过社交媒体、租赁商、合作组织以极低或零成本的模式分享汽车、住房、服装和其他物品;学生更多地参与到基于零成本模式的开放式网络课程…… ......一起来看看 《零边际成本社会》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具