本页包含可帮助您将 Bazel 与 C++ 项目结合使用的资源。此页面提供了指向教程、构建规则以及其他与使用 Bazel 构建 C++ 项目有关的信息的链接。
使用 Bazel
以下资源可帮助您在 C++ 项目中使用 Bazel:
最佳做法
除了常规 Bazel 最佳实践之外,以下是专门针对 C++ 项目的最佳做法。
BUILD 文件
创建 BUILD 文件时,请遵循以下准则:
每个
BUILD
文件应包含目录中每个编译单元的 1 个cc_library
规则目标。您应尽可能细分 C++ 库,以最大限度地提高增量性并并行构建。
如果
srcs
中只有一个源文件,请使用该 C++ 文件的名称为库命名。此库应包含 C++ 文件、任何匹配的头文件以及库的直接依赖项。例如:cc_library( name = "mylib", srcs = ["mylib.cc"], hdrs = ["mylib.h"], deps = [":lower-level-lib"] )
在文件中,每个
cc_library
目标对应一个cc_test
规则目标。将目标文件命名为[library-name]_test
,将源文件命名为[library-name]_test.cc
。例如,上述mylib
库目标的测试目标如下所示:cc_test( name = "mylib_test", srcs = ["mylib_test.cc"], deps = [":mylib"] )
包含路径
请遵循以下准则设置 include 路径:
将所有包含路径设为相对于工作区目录。
对非系统头文件使用带引号的包含 (
#include "foo/bar/baz.h"
),而不是尖括号 (#include <foo/bar/baz.h>
)。避免使用 UNIX 目录快捷方式,例如
.
(当前目录)或..
(父级目录)。对于需要将 include 指向项目代码库之外的旧版或
third_party
代码(例如需要前缀的外部代码库 include),请在cc_library
规则目标上使用include_prefix
和strip_include_prefix
参数。