You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为使用Cgo的go_library正确添加.h头文件依赖?

Bazel构建依赖pebbe/zmq4的Go二进制文件时无法找到zmq.h

我正尝试构建一个依赖com_github_pebbe_zmq4的go_binary,该库是C++库libzmq的Go封装。但一直无法让pebbe/zmq4找到libzmq中的zmq.h,尝试了以下两种方法均未成功:

方法1:使用Bazel中央仓库的libzmq构建

load("@rules_go//go:def.bzl", "go_binary")

go_binary(
    name = "zmq_client",
    srcs = ["zmq_client.go"],
    deps = [
        "@com_github_pebbe_zmq4//:go_default_library",
    ],
    cgo = True,
    cdeps = [
        # 引入完整库也无法生效
        # "@libzmq//:libzmq",
        "@libzmq//:libzmq_headers_only",
    ],
)

引入完整的@libzmq//:libzmq库同样无法解决问题。

方法2:使用rules_foreign_cc构建libzmq

load("@rules_foreign_cc//foreign_cc:defs.bzl", "cmake")
load("@rules_go//go:def.bzl", "go_binary")

cmake(
    name = "zmq",
    lib_source = "@zeromq//:all_srcs",
    out_static_libs = ["libzmq.a"],
)

go_binary(
    name = "zmq_client",
    srcs = ["zmq_client.go"],
    deps = [
        "@com_github_pebbe_zmq4//:go_default_library",
    ],
    cgo = True,
    cdeps = [
        ":zmq",
    ],
)

我遗漏了什么?我多次查阅go_binary和rules_foreign_cc文档,也在Bazel Slack的#Go频道求助,但仍未找到解决方案。


内容的提问来源于stack exchange,提问作者HaiXin Tie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 22:08:11