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

