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

使用Bazel构建CMake项目遇路径错误,求解决方法

解决Bazel构建CMake项目的路径错误并掌握构建方法

问题场景

项目目录结构:

BazelCmake/
├── WORKSPACE.bazel
├── Source/
│   ├── BUILD.bazel
│   ├── CMakeLists.txt
│   └── tutorial.cpp
└── Build/

各文件核心内容:

  • WORKSPACE.bazel:配置了rules_foreign_cc依赖与pcre远程仓库
  • Source/BUILD.bazel:初始配置为构建pcre第三方库
  • Source/tutorial.cpp:简单Hello World程序
  • Source/CMakeLists.txt:定义Tutorial可执行项目

执行bazel build //:pcre时触发错误:

Starting local Bazel server and connecting to it...
ERROR: error loading package '': Label '@rules_foreign_cc//foreign_cc:repositories.bzl' is invalid because 'foreign_cc' is not a package; perhaps you meant to put the colon here: '@rules_foreign_cc//:foreign_cc/repositories.bzl'?
INFO: Elapsed time: 6.982s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (0 packages loaded)

错误原因

使用的rules_foreign_cc 0.1.0版本目录结构与官方文档(对应新版本)不匹配,旧版本中foreign_cc是根目录文件夹而非子包,导致加载路径错误;同时当前BUILD配置目标是第三方pcre库,而非本地的CMake项目。

分步解决方案

1. 修正WORKSPACE.bazel的依赖加载路径

修改WORKSPACE.bazel中的load语句:

# 原错误语句
# load("@rules_foreign_cc//foreign_cc:repositories.bzl", "rules_foreign_cc_dependencies")

# 修改为正确路径
load("@rules_foreign_cc//:foreign_cc/repositories.bzl", "rules_foreign_cc_dependencies")

2. 调整Source/BUILD.bazel构建本地CMake项目

替换BUILD.bazel内容为构建本地项目的配置:

load("@rules_foreign_cc//:foreign_cc/defs.bzl", "cmake")

cmake(
    name = "Tutorial",
    srcs = glob(["**"]),  # 包含当前目录所有源文件与CMake配置文件
    out_binaries = ["Tutorial"],  # 指定生成的可执行文件名称
)

3. 修正CMakeLists.txt的文件名错误

CMakeLists.txt中源文件名与实际文件不符,修改如下:

# 原错误语句
# add_executable(Tutorial tutorial.cxx)

# 修改为实际文件名
add_executable(Tutorial tutorial.cpp)

4. 执行正确的构建命令

进入BazelCmake父目录,执行:

bazel build //Source:Tutorial

验证结果

构建成功后,可执行文件位于bazel-bin/Source/Tutorial,运行该文件会输出:

Hello

核心知识点

  • Bazel标签格式:@仓库名//包路径:目标名,包路径是包含BUILD文件的目录,根目录包用//:开头。
  • rules_foreign_cc版本差异:不同版本的文件路径可能不同,建议使用较新稳定版以匹配官方文档。
  • CMake规则使用:构建本地项目时,需确保srcs包含所有必要的CMake配置和源文件,out_binaries指定生成的可执行文件名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:40:20