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

如何将new_local_repository从旧版Bazel迁移至v8.1.1

迁移Bazel WORKSPACE到模块系统解决本地依赖问题

针对你从Bazel v4.1.0迁移到v7+版本,将new_local_repository转换为模块系统下配置的需求,以下是具体解决方案:

1. 创建MODULE.bazel文件

替换原WORKSPACE的工作区声明,定义模块并加载仓库配置:

module(
    name = "cpflex",
    version = "0.0.1", # 版本可根据项目实际情况自定义
)

# 加载仓库定义
load("//:REPO.bazel", "load_repositories")
load_repositories()

2. 创建REPO.bazel文件

Bazel模块系统中用local_repository替代旧的new_local_repository,将原WORKSPACE中的仓库配置迁移到这里:

def load_repositories():
    local_repository(
        name = "ghs",
        path = "C:/temp/greenhills_arm/comp_202014_1fp_x64/ansi/",
        build_file = "//:BUILD.ghs_header", # 路径指向项目根目录下的BUILD文件
    )

3. 保留原BUILD.ghs_header文件

无需修改该文件,它的作用是将本地目录的头文件打包为可引用的cc_library,内容保持原样:

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

GHS_HDR_FILE_LIST = glob(["**/*.h",])
filegroup(
    name = "ghs_headers",
    srcs = GHS_HDR_FILE_LIST,
)

cc_library(
    name = "headers",
    hdrs = [":ghs_headers"]
)

4. 项目中引用依赖

和之前的引用方式完全一致,例如在目标cc_library中:

cc_library(
    name = "your_target",
    srcs = ["your_source.cc"],
    hdrs = ["your_header.h"],
    deps = ["@ghs//:headers"],
)

关键提示

  • 确保build_file的路径正确://:BUILD.ghs_header表示相对于主模块根目录的文件位置,若你的BUILD文件在其他子目录,需调整路径。
  • Bazel 7+默认启用模块系统,无需额外配置,只要存在MODULE.bazel就会自动切换到模块模式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:46:14