BeginBazelChap06
(2025-05-11 17:21:40)
标签:
bazelgo |
分类: Qt/Go |
1. go.mod中加入非标仓库中的项目,如: require google.golang.org/protobuf
v1.36.6
------------------------------------------------------------------------------------
2. go.mod中的 go 1.23.4 要与MODULE.bazel 中的内容一致:
------------------------------------------------------------------------------------
3. go.sum 文件是 bazel build必备。通过 go mod tidy
自动生成内容,不要手动修改。
------------------------------------------------------------------------------------
4. MODULE.bazel
不需要添加可能已被包含的模块,通常下面两个就够了。
module(name = "myproject")
bazel_dep(name = "rules_go", version = "0.52.0")
bazel_dep(name = "gazelle", version = "0.42.0")
go_sdk = use_extension("@rules_go//go:extensions.bzl",
"go_sdk")
go_sdk.download(version = "1.23.4")
go_deps = use_extension("@gazelle//:extensions.bzl",
"go_deps")
go_deps.from_file(go_mod = "//:go.mod")
------------------------------------------------------------------------------------
5. 为使用gazelle,需要在go.mod同级目录(项目根目录)创建BUILD.bazel文件
load("@bazel_gazelle//:def.bzl", "gazelle")
gazelle(
)
------------------------------------------------------------------------------------
6.src/BUILD 文件内容如下:
load("@rules_go//go:def.bzl", "go_binary", "go_library")
load("@rules_go//proto:def.bzl", "go_proto_library")
proto_library(
)
go_proto_library(
)
go_binary(
)
java_proto_library(
)
java_binary(
)
需注意:
1> load两行够用,与MODULE.bazel对应
2> importpath 如果是使用本地文件,可按目录结构填写
------------------------------------------------------------------------------------
7. proto文件 内容如下:
syntax = "proto3";
package transmission_object;
option go_package =
"myproject/src/transmission_object;transmission_object";
message TransmissionObject{
}
说明:
1> package 可自动供Java,C#,Python使用,但不适用于Go。
2> option go_package供Go使用,注意字符串中的;
------------------------------------------------------------------------------------
8. Go语言 import
import (
)
最下两行一个是非标准模块的引入,一个是本地模块的引入。
一知半解,记录备忘 2025-5-11
后一篇:Windows更新