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

如何配置Bazel WORKSPACE实现非Bazel包Graphviz的自动拉取与构建

你可以通过以下配置实现graphviz的自动拉取构建,完全消除本地路径依赖:

配置步骤

1. 导入构建依赖规则

首先在WORKSPACE文件头部添加rules_foreign_cc导入配置,该规则用于处理第三方C/C++项目的构建集成:

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "rules_foreign_cc",
    sha256 = "6041f3398ed575386c0aeb1b19a31e12c05e20c062c9298ae90768665399a17f",
    strip_prefix = "rules_foreign_cc-0.9.0",
    url = "https://github.com/bazelbuild/rules_foreign_cc/archive/refs/tags/0.9.0.tar.gz",
)

load("@rules_foreign_cc//foreign_cc:repositories.bzl", "rules_foreign_cc_dependencies")
rules_foreign_cc_dependencies()

2. 替换原有graphviz本地依赖配置

删除原来的new_local_repository代码块,替换为以下配置,实现源码自动拉取和编译:

http_archive(
    name = "graphviz",
    build_file_content = """
load("@rules_foreign_cc//foreign_cc:defs.bzl", "configure_make")

package(default_visibility = ["//visibility:public"])

configure_make(
    name = "graphviz_lib",
    lib_source = "@graphviz//:all_srcs",
    out_static_libs = ["libgvc.a", "libcgraph.a", "libcdt.a"],
    out_include_dir = "include/graphviz",
)

cc_library(
    name = "graphviz",
    deps = [":graphviz_lib"],
)
""",
    sha256 = "c185f14b6440037922c21fd3437807e7372183d789792b72b837774c16f66155",
    strip_prefix = "graphviz-2.49.1",
    urls = ["https://gitlab.com/api/v4/projects/4207231/packages/generic/graphviz-releases/2.49.1/graphviz-2.49.1.tar.gz"],
)
配置说明
  • 构建时Bazel会自动校验源码包哈希值,拉取对应版本的graphviz源码,无需本地预安装
  • 编译参数可以根据你的实际需求调整configure_make的configure_args字段,添加自定义编译选项
  • 编译产物会被自动缓存,只有第一次构建或者配置变更时才会重新拉取编译
  • 所有项目成员使用统一的graphviz版本,不会出现本地依赖版本不一致的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:15:03