Bazel C++ 规则项目教程
rules_ccC++ Rules for Bazel项目地址:https://gitcode.com/gh_mirrors/ru/rules_cc
项目目录结构及介绍
rules_cc/
├── LICENSE
├── README.md
├── WORKSPACE
├── BUILD
├── cc/
│ ├── BUILD
│ ├── cc.bzl
│ ├── defs.bzl
│ ├── toolchain.bzl
│ └── ...
├── examples/
│ ├── BUILD
│ ├── main.cc
│ └── ...
└── ...
- LICENSE: 项目的许可证文件,采用 Apache-2.0 许可证。
- README.md: 项目介绍和使用说明。
- WORKSPACE: 用于定义外部依赖和仓库。
- BUILD: 包含项目的构建规则。
- cc/: 包含 C++ 规则的定义和配置。
- cc.bzl: 定义 C++ 规则的主要文件。
- defs.bzl: 包含 C++ 规则的具体实现。
- toolchain.bzl: 定义 C++ 工具链。
- examples/: 包含示例代码和构建文件。
项目的启动文件介绍
项目的启动文件是 WORKSPACE
文件,它用于定义项目的外部依赖和仓库。以下是一个示例:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_cc",
urls = ["https://github.com/bazelbuild/rules_cc/archive/refs/tags/<VERSION>.tar.gz"],
sha256 = "",
)
在这个文件中,我们使用 http_archive
来加载 rules_cc
仓库。
项目的配置文件介绍
项目的配置文件主要包括 BUILD
文件和 cc/defs.bzl
文件。
BUILD 文件
BUILD
文件定义了项目的构建规则,以下是一个示例:
load("@rules_cc//cc:defs.bzl", "cc_library")
cc_library(
name = "main",
srcs = ["main.cc"],
hdrs = ["main.h"],
)
在这个文件中,我们使用 cc_library
规则来定义一个 C++ 库。
cc/defs.bzl 文件
cc/defs.bzl
文件包含了 C++ 规则的具体实现,以下是一个示例:
def cc_library(name, srcs = [], hdrs = [], deps = [], **kwargs):
native.cc_library(
name = name,
srcs = srcs,
hdrs = hdrs,
deps = deps,
**kwargs
)
在这个文件中,我们定义了 cc_library
规则的具体实现。
以上是 Bazel C++ 规则项目的教程,包含了项目的目录结构、启动文件和配置文件的介绍。希望对你有所帮助!
rules_ccC++ Rules for Bazel项目地址:https://gitcode.com/gh_mirrors/ru/rules_cc