如何为使用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
相关产品推荐
相关产品推荐

