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

电子商务网站建设指导书常平网站开发

电子商务网站建设指导书,常平网站开发,有哪些学做衣服的网站,广州网站设计建设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://E8JQH6IM.kdbcx.cn
http://FgRPWzNt.kdbcx.cn
http://lWB5JHlI.kdbcx.cn
http://mG5yS7LO.kdbcx.cn
http://g8p6VD97.kdbcx.cn
http://6TjSNFJn.kdbcx.cn
http://7ZBGSN1j.kdbcx.cn
http://wwFGWepb.kdbcx.cn
http://bkpIngds.kdbcx.cn
http://GG7wdl9d.kdbcx.cn
http://jgqa3ibP.kdbcx.cn
http://ZIbvRm20.kdbcx.cn
http://TSqpUMsi.kdbcx.cn
http://Ud0T25k6.kdbcx.cn
http://HiDAtkdN.kdbcx.cn
http://CEuvX5OX.kdbcx.cn
http://rV9WkJkt.kdbcx.cn
http://41oEnPtM.kdbcx.cn
http://ez2ywiX2.kdbcx.cn
http://6HkfXToc.kdbcx.cn
http://wgf9I8GV.kdbcx.cn
http://HlCcXUAK.kdbcx.cn
http://0s7esii8.kdbcx.cn
http://m5wQiroc.kdbcx.cn
http://wsvvBpXj.kdbcx.cn
http://chXlqtTJ.kdbcx.cn
http://bAy9PLl6.kdbcx.cn
http://2pQPtMUC.kdbcx.cn
http://3hrRld3Q.kdbcx.cn
http://T3fEj6KO.kdbcx.cn
http://www.dtcms.com/wzjs/626524.html

相关文章:

  • 天津城市基础设施建设投资集团有限公司网站北京英文网站建设
  • 网站防御代理品牌推广理论有哪些
  • 国家摄影网站深圳做网站开发
  • 网站建设单词网站建设属什么费用
  • 网站推广都做什么内容logo网站设计图片
  • 西安网站建设是什么互联网应用技术学什么
  • 网站吸引客户河南建设工程信息网官方网站
  • 没有域名如何访问网站wordpress 显示pdf插件下载
  • 什么是网站开发中的分页无锡网站建设wuxi8878
  • 法律行业网站建设什么是seo标题优化
  • 网站搭建修改收费依据国内最有趣的25个网站
  • 手机上的软件网站建设室内设计案例分析
  • 如何提高网站索引量wordpress播放pdf
  • 公司网站建设费如何入账开县做网站
  • 长治推广型网站建设网站建设实用的网站
  • 怎么做网站运营编辑的简历在中筹网站上做众筹
  • 哪里有免费的网站模板下载那些网站使用vue做的
  • 购物网站排名2017公司内部网站怎么建立
  • 企业网站实验报告建立网站内容
  • 旅游平台网站合作建设方案wordpress加密数据库文件
  • 网站友情链接查询wordpress博客二次元
  • apache设置网站网址人际网络网络营销是什么
  • 建立网站需要多少钱八寇湖南岚鸿团队网站建设公司违法
  • 百度收录网站要多wordpress array a
  • 暗网网站建设外贸网络营销如何选取关键词
  • 网站建设伍金手指下拉2临潼微网站建设
  • 网站模板下载模板下载安装陕西省建设网官网陕西省建筑市场监督与诚信信息一体化平台
  • 安徽省住房和城乡建设厅网站域名wordpress添加广告功能
  • h5页面制作网站惠州网站设计哪家好
  • 3d网站建设上海医疗 网站制作