当前位置: 首页 > wzjs >正文

统计网站建设仿百度 wordpress

统计网站建设,仿百度 wordpress,产品单页营销型网站模板,深圳网络设计公司Bazel 语法详解 Bazel 的核心是 WORKSPACE 和 BUILD 文件。它们使用 Starlark 语言(一种 Python 方言)编写。以下是 Bazel 语法的详细说明。 1. WORKSPACE 文件 WORKSPACE 文件用于定义工作空间的根目录,并声明外部依赖(如第三方…

Bazel 语法详解

Bazel 的核心是 WORKSPACEBUILD 文件。它们使用 Starlark 语言(一种 Python 方言)编写。以下是 Bazel 语法的详细说明。


1. WORKSPACE 文件

WORKSPACE 文件用于定义工作空间的根目录,并声明外部依赖(如第三方库或工具链)。它是一个全局配置文件。

示例:
workspace(name = "my_project")load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")# 下载一个外部依赖(例如 rules_go)
http_archive(name = "io_bazel_rules_go",sha256 = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",urls = ["https://github.com/bazelbuild/rules_go/releases/download/v0.30.0/rules_go-v0.30.0.zip"],
)# 加载外部依赖
load("@io_bazel_rules_go//go:deps.bzl", "go_rules_dependencies", "go_register_toolchains")
go_rules_dependencies()
go_register_toolchains()
关键点:
  • workspace(name = "my_project"):定义工作空间的名称,必须是唯一的。
  • load():用于加载外部规则或工具。
  • http_archive():用于下载外部依赖。

2. BUILD 文件

BUILD 文件用于定义构建目标(如二进制文件、库、测试等)。每个目录可以有一个或多个 BUILD 文件。

示例:
# 定义一个 C++ 二进制文件
cc_binary(name = "hello_world",srcs = ["main.cc"],deps = [":hello_lib"],
)# 定义一个 C++ 库
cc_library(name = "hello_lib",srcs = ["hello.cc"],hdrs = ["hello.h"],visibility = ["//visibility:public"],
)# 定义一个 C++ 测试
cc_test(name = "hello_test",srcs = ["test.cc"],deps = [":hello_lib"],
)
关键点:
  • 目标类型
    • cc_binary:生成可执行文件。
    • cc_library:生成库文件(静态库或动态库)。
    • cc_test:生成测试可执行文件。
  • 属性
    • name:目标的名称,必须是唯一的。
    • srcs:源文件列表(如 .cc 文件)。
    • hdrs:头文件列表(如 .h 文件)。
    • deps:依赖的其他目标(如库)。
    • visibility:控制目标的可见性(如 //visibility:public 表示对所有目标可见)。

3. 常用规则(Rules)

Bazel 支持多种编程语言,每种语言都有对应的规则。以下是一些常用规则:

C++ 规则
  • cc_binary:生成可执行文件。
  • cc_library:生成库文件。
  • cc_test:生成测试可执行文件。
Java 规则
  • java_binary:生成可执行 JAR 文件。
  • java_library:生成 Java 库。
  • java_test:生成 Java 测试。
Python 规则
  • py_binary:生成可执行 Python 脚本。
  • py_library:生成 Python 库。
  • py_test:生成 Python 测试。
Go 规则
  • go_binary:生成可执行 Go 程序。
  • go_library:生成 Go 库。
  • go_test:生成 Go 测试。

4. 依赖管理

Bazel 的依赖分为两种:

  1. 内部依赖:同一工作空间内的目标。
  2. 外部依赖:通过 WORKSPACE 文件引入的第三方库。
内部依赖

BUILD 文件中,通过 deps 属性引用其他目标:

cc_binary(name = "my_program",srcs = ["main.cc"],deps = ["//path/to:my_library"],
)
外部依赖

WORKSPACE 文件中,通过 http_archivegit_repository 引入:

http_archive(name = "com_google_googletest",urls = ["https://github.com/google/googletest/archive/v1.11.0.zip"],strip_prefix = "googletest-1.11.0",
)

然后在 BUILD 文件中引用:

cc_test(name = "my_test",srcs = ["test.cc"],deps = ["@com_google_googletest//:gtest"],
)

5. 可见性(Visibility)

Bazel 通过 visibility 属性控制目标的可见性。默认情况下,目标仅对同一 BUILD 文件中的其他目标可见。

示例:
cc_library(name = "my_lib",srcs = ["lib.cc"],hdrs = ["lib.h"],visibility = ["//visibility:public"],  # 对所有目标可见
)
  • //visibility:public:对所有目标可见。
  • //visibility:private:仅对同一 BUILD 文件中的目标可见。
  • //path/to:__pkg__:仅对指定路径下的目标可见。

6. 标签(Labels)

Bazel 使用标签(Labels)来唯一标识目标。标签的格式为:

//path/to:target_name
  • //:表示工作空间根目录。
  • path/to:目标所在的目录路径。
  • target_name:目标的名称。
示例:
  • //:hello_world:根目录下的 hello_world 目标。
  • //src:mainsrc 目录下的 main 目标。

7. 构建和运行命令

  • 构建目标
    bazel build //path/to:target_name
    
  • 运行目标
    bazel run //path/to:target_name
    
  • 测试目标
    bazel test //path/to:target_name
    

8. Demo:C++ 项目

以下是一个完整的 C++ 项目示例:

项目结构
my_project/
├── WORKSPACE
├── BUILD
├── main.cc
├── hello.cc
├── hello.h
└── test.cc
WORKSPACE
workspace(name = "my_project")
BUILD
cc_binary(name = "hello_world",srcs = ["main.cc"],deps = [":hello_lib"],
)cc_library(name = "hello_lib",srcs = ["hello.cc"],hdrs = ["hello.h"],visibility = ["//visibility:public"],
)cc_test(name = "hello_test",srcs = ["test.cc"],deps = [":hello_lib"],
)
main.cc
#include "hello.h"int main() {say_hello();return 0;
}
hello.h
#ifndef HELLO_H
#define HELLO_Hvoid say_hello();#endif
hello.cc
#include <iostream>
#include "hello.h"void say_hello() {std::cout << "Hello, Bazel!" << std::endl;
}
test.cc
#include "hello.h"
#include <cassert>void test_say_hello() {// Testassert(true);
}int main() {test_say_hello();return 0;
}
构建和运行
# 构建
bazel build //:hello_world# 运行
bazel run //:hello_world# 测试
bazel test //:hello_test

文章转载自:

http://W9wBi99j.yhjLg.cn
http://NpqMfp9u.yhjLg.cn
http://VhcyfvOE.yhjLg.cn
http://pkHXrwNr.yhjLg.cn
http://Cbkxsakc.yhjLg.cn
http://k3P3cnOi.yhjLg.cn
http://zmDYMFXP.yhjLg.cn
http://IzeIyMJZ.yhjLg.cn
http://ihuy0eAe.yhjLg.cn
http://gsV3p58n.yhjLg.cn
http://5ng32aOn.yhjLg.cn
http://4xa3uzmn.yhjLg.cn
http://XA2DmNyF.yhjLg.cn
http://6IPy9tIF.yhjLg.cn
http://FgbSdoar.yhjLg.cn
http://wNQKkFGn.yhjLg.cn
http://YGjwrCoS.yhjLg.cn
http://i481vJYA.yhjLg.cn
http://U8mpXisu.yhjLg.cn
http://c9L8EJqP.yhjLg.cn
http://t2SUdpqA.yhjLg.cn
http://dpOkf02L.yhjLg.cn
http://RbSXJAQx.yhjLg.cn
http://yXa5tGf2.yhjLg.cn
http://FpfOCXyd.yhjLg.cn
http://ylAyYN2L.yhjLg.cn
http://XXvLYUTa.yhjLg.cn
http://wlSG28A1.yhjLg.cn
http://V06rQJBd.yhjLg.cn
http://mYPX28jY.yhjLg.cn
http://www.dtcms.com/wzjs/632899.html

相关文章:

  • 人工智能营销网站开发上海全网推广
  • 太原市建设工程招标投标网站运营好还是网站开发好
  • 可以充值的网站怎么建设现在还做自适应网站
  • 深圳软件公司招聘一个网站多个子域名优化
  • 绵阳网站建设费用长沙手机网站建设公司排名
  • html网站开发需要什么软件厚街做网站
  • 百度收录排名好的网站网上怎么开自己的网店呀
  • 营销型企业网站优化的作用网站添加 百度商桥
  • 一个人做网站哈尔滨制作网站工作室
  • 找网站开发需求客户平台wordpress阅读量造假
  • 企业门户网站是什么意思搜狗推广做网站要钱吗
  • 网站建设与管理案例教程在线阅读北京移动官网网站建设
  • 如何建立一个网站及appwordpress搭建镜像
  • h5网站模板如何建立app
  • 免费设计装修网站网站推广联盟
  • 网站设计中的js是什么合作网站账号登录方式
  • 企业门户网站开发要多少钱全国建设管理信息网站
  • 重庆网站设计开发炫酷网站界面设计
  • 网站建设合同属于印花税的哪个税目专门做外贸网站有哪些
  • 网站关键词代码位置seo优化外包
  • 厦门外贸网站找谁上海网页设计公司哪儿济南兴田德润有活动吗
  • 滁州网站建设费用物流网站建设网
  • 网页设计模板免费下载网站响应式网站适合用什么框架做
  • 网站开发与设计需要哪些技术未来中森网站建设咨询
  • 建站页面整人关不掉的网站怎么做
  • 如何建立自己的商城网站做网站的前途怎么样
  • 番禺网站开发设计欧美网站模板下载
  • 申请做网站东莞建设网站推广公司地址
  • 网站上的缩略图怎么做清晰ih5 做视频网站
  • dede 网站地图 插件wordpress 网易云