Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
 Bazel_IT技术博客_编程技术问答 - 「Fatal编程技术网」

Bazel 将输出文件重命名为其他包

我有一个标签//foo\u base:bar,它生成一个foo\u base/bar\u 0\u 8\u 9.tar。 现在我还需要将其作为foo_concrete/bar.tar(在包//foo_concrete中) 这应该可以通过编写一些不复制文件的操作来实现。但这似乎有些过分。有更优雅的解决方案吗?您可以使用genrule创建符号链接: genrule( name = "make_bar_tar", srcs = ["//foo_base:bar"], outs =

使用Bazel创建和读取临时文件

我正在尝试使用Bazel为TensorFlow设置自定义构建系统。 我需要在配置步骤中创建一个临时文件,在构建步骤中将其用作缓存。 我可以在.bzl文件中创建它,方法是: repository_ctx.file(filename) 配置之后,我可以看到它在文件夹中: $HOME/.cache/bazel/_bazel_$USERNAME/%MD5%/external/%repository_name% 其中repository\u name实际上是repository\u ctx.name

Bazel-如何获得一个简短但密封的测试温度目录?

我有一个测试,它试图启动一个嵌入式mysql。 它尝试将套接字文件写入Files.createTempFile(null,.sock”),返回时出现以下错误: mysql启动失败,错误:[错误]套接字文件路径太长(>103):/private/var/tmp/_bazel_user/1c8ed8d84f6cb79483aa3cc4da758c86/bazel sandbox/247811212867584790357/execroot/some_workspace/_tmp/dfebe48cda

如何为指定的bazel规则禁用远程缓存

在我的bazelrc中,我有以下配置: build:remote --spawn_strategy=remote build:remote --remote_local_fallback build:remote --genrule_strategy=sandboxed build:remote --remote_rest_cache=http://HOST/PATH 这对于使用“bazel build-c opt--config=remote//…”的所有规则都非常有效。然而,对于某些类型的

Bazel可以使用多个工作区文件吗?

假设我正在使用一个特定的CROSSTOOL+工具链,例如,我想编译一个第三方库,例如使用该工具链。是否可以在不修改第三方库的工作区的情况下执行此操作 如果我必须修改工作区,那么为工具链repo添加local\u repository()规则似乎足够合理。但在这种情况下,除非我也从工具链工作区复制新的\u http\u归档()(它提取实际的工具链二进制文件),否则我无法让它工作。需要添加本地存储库的依赖项对我来说似乎很奇怪-它们不应该被拉进来吗 我可以对工具链repo进行更改,但我更希望不必修补或

Bazel 生成文件可以具有任意文件扩展名吗?

我知道bazel接受这两个文件名作为有效文件名 android工具似乎也有一个文件 通常,bazel对生成文件的扩展名有任何限制吗?例如,我可以使用BUILD.generated来描述从未生成的生成文件生成生成的生成文件吗?扩展名.tools是building Bazel本身的一部分。从Bazel的角度来看,它只是任何普通的文件。它是在这里取的: 然后最终在这里得到处理: 对于您提到的用例,一种方法是使用有意义的名称生成一个.bzl文件,该文件包含一个宏,您可以从BUILD或BUILD.baze

Bazel 使用构建系统运行测试或与集群交互

下面这些使用Bazel的项目的目的是什么,而不是构建软件 它们只是方便地为run命令提供了环境(与构建可移植可执行文件相反),还是我遗漏了什么 据我所知,Bazel只能用于运行E2E测试的子集,这取决于所改变的知识。免责声明:我对k8s和docker只有粗略的了解 Bazel不仅用于构建和测试,还可以部署,正如您在这些项目中发现的规则一样 我能说的最好的一点是,根据所改变的知识,Bazel只能用于运行E2E测试的子集 正确,但也将测试扩展到部署。如果您只更改了注入图像的Go二进制文件中的

有没有一种方法可以在不运行bazel的情况下使用bazel构建测试?

每次我运行bazel test时,它都会构建所有目标测试二进制文件并运行它们。有没有办法只编译它们或不运行它们就生成它们?您可以使用bazel build只生成那些目标而不运行测试。您可以使用bazel build只生成那些目标而不运行测试。谢谢!我认为测试目标的处理方式将不同于常规目标。此外,如果您只想构建测试目标,请通过--build\u tests\u only标志。谢谢!我认为测试目标的处理方式将不同于常规目标。此外,如果您只想构建测试目标,请通过--build\u tests\u on

Bazel 巴泽尔克朗格跨平台

我试图让bazel在Windows和Linux上都使用clang作为编译器。(Debian 10,如果需要的话) 在Windows上,我通过添加一个Windows clang平台并注册所述的工具链,使其正常工作。 有没有类似的简单方法可以让您在Linux上切换到使用clang?我已经找到了一个解决方案,但据我所知,您有两个(或三个)选择: 您可以使用您的woncc\u工具链。这可以说是“正确”的解决方案 您可以尝试从中调整cc_configure(),并在工作区中使用它。但这既有挑战性,也不一定

特定GCC主要版本的Bazel选择条件

我们必须将一个特殊的linkopts标志传递给使用的cc_库规则,特别是针对Debian 10附带的GCC版本(GCC 8.3) 我不想让开发人员在顶层传递一个--config=old\u gcc或类似文件 我希望这样的咒语能奏效: linkopts = select({ "@bazel_tools//tools/cpp:gcc": ["-lstdc++fs"], "//conditions:default": [], }), 但是a)gcc不是se

Bazel maven_jar规则的别名jar目标

我的工作区中有以下maven_jar: maven_jar( name = "com_google_code_findbugs_jsr305", artifact = "com.google.code.findbugs:jsr305:3.0.1", sha1 = "f7be08ec23c21485b9b5a1cf1654c2ec8c58168d", ) 在我的项目中,我通过@com\u google\u code\u findbugs\u jsr305//jar引用它。

在skylark中获取编译器标志 < >我想把基于CMAGE的C++库转换成BAZEL。 作为当前CGIAR项目的一部分,我使用基于LabCLAN的代码生成器,它解析C++头文件并从解析的AST生成C++代码。为了做到这一点,我需要实际的编译器标志,用于构建标头所属的cc_库。这些标志被传递给代码生成工具,以便它可以使用clang的预处理器

是否有任何方法可以访问用于从skylark或gen_规则构建依赖项的编译器标志?我对include路径和定义特别感兴趣。我们正在研究它。嗯,现在不行,但很快会的。您可能希望订阅,并在此处描述您的需求,以便我们在设计API时考虑这些需求。标题是由什么构建的,是否有genrule或其他规则可以执行此操作?这是cc_库规则的一部分。抱歉,仍然混淆。为了做到这一点,我需要用于构建标头的实际编译器标志。-这听起来像是头文件是编译器的输出。不知怎么回事?你能举一个简单的管道例子吗?对不起,我不太准确。我据此

Bazel 强制目标重建

在建立目标后,我需要触发这些目标的部署 为了真正不浪费任何时间我希望将此作为构建规则。现在,为了实现这一点,我希望每次都进行部署。 因此,问题是: 如何强制从头开始确定地重建目标?作为第二步,这样做会更容易,例如 java_binary( name = "target1", ... ) java_binary( name = "target2", ... ) sh_binary( name = "deploy-targets", srcs =

我如何判断哪些bazel方面输出仍然相关

作为我们创建bazel maven过渡互操作工具(从粒度更大的bazel Jar创建maven大小的Jar)的工作的一部分, 我们已经编写了一个方面,它在整个bazel repo的bazel build上运行,并将重要信息写入txt文件输出(例如:jar文件路径、编译deps目标和运行时deps目标等) 我们遇到了一个问题,回购协议的代码被更改,导致一些txt文件不再被写入。但是以前运行的旧txt文件(在代码更改之前)仍然存在 有没有办法知道这些txt文件不再相关?您应该能够使用--build\

Bazel:如何获取输出二进制文件的路径?

考虑一些路径/构建文件: 通过检查bazel-bin文件夹,我找到了bazel-bin/somepath/libbar_proto-speed.jar 如何使用bazel查询从//somepath:bar\u java\u proto获取bazel bin/somepath/libbar\u proto-speed.jar?您没有 了解输出路径需要执行Bazel的加载和分析阶段,即1加载构建文件,2分析依赖项,以得出执行计划和称为动作图的具体构建动作 Bazel查询只运行加载阶段,而不运行分析阶

请注明“--构建“python”zip;Bazel py_二进制规则中的标志

是否可以从py_二进制规则中指定bazel“-build_python_zip”标志,这样我就不必每次在工作区中使用bazel时都添加此标志?似乎没有办法按照py_binary目标指定此标志 但是,您可以使用bazelrc文件来存储常用选项。在/.bazelrc的工作区的bazelrc中添加以下行: build --build_python_zip 请注意,使用此方法,bazel build、bazel test和bazel run的每次调用都将包含此标志

Bazel 查询第三方存储库规则的使用情况

管理第三方依赖关系一直是个麻烦。在我们的整体式回购中,有70多个第三方回购引入了存储库规则(例如go\u repository,git\u repository,等等) 一些回购协议作为可传递依赖项添加。在升级了一些直接的第三方依赖项之后,一些可传递的依赖项变成了悬挂链接 我已经尝试了以下方法: $ bazel query 'somepath(//...,@REPO_NAME_IN_QUESTION//...)' 运行速度非常慢,我在所有构建文件中都得到了快速grep——因为repo规则总是以

Bazel 谷歌云构建-一次替换中的多个值?

我正在使用谷歌云构建,其中一个步骤是运行Bazel构建。我尝试使用替换在一次调用中构建多个目标 当: 步骤如下所示: 目标替换是//foo///条形码/… 实际运行的命令是bazel build”//foo/..//bar/..“,这显然会导致无效的目标名称错误。(单个目标工作正常) 最终结果应该类似于bazel-build//foo///条形码/… 有没有一种方法可以在一个子系统中“拆分”多个参数?或者让命令单独处理参数?我很难找到解决方法。我用Bazel(不是build,我没有示例,但有he

在bazels构建文件中包含指令

我正在使用Bazel,有许多构建文件,希望自动生成零件。有两种选择 1) 我创建了一个BUILD.template文件,替换文件中的相应元素,并在生成后将其重命名回BUILD 。。或者 2) 我使用一个附加文件,如BUILD.ext,并在BUILD文件中使用include指令,该文件包含给定的文件。但我找不到任何包含的支持 非常感谢您的帮助 一种可能性是,您可以在.bzl文件中定义模板,并在构建文件中加载这些宏

Bazel'repository\u rule'如何调整'label\u flag'(或者更一般的'config\u设置')?

我可以在Bazel中创建一个label_标志,以允许命令行标志依次与BazelBUILD文件中的config_设置相匹配 但是,我不想硬编码标签\u标志的默认值,而是在评估存储库\u规则(或工作区文件的其他部分)时,根据系统计算一个好的默认值 我想到的最好(但很糟糕)的方法是从.bzl文件加载默认值,该文件是使用存储库中的\u ctx生成的 我觉得通过文本替换生成新文件可能不是正确的方法,但我找不到其他方法。思想?帮助?使用检查主机系统的存储库规则生成bzl文件是实现您现在需要的唯一方法。所以你

在bazel方面输出文件中积累数据的推荐策略

我正在编写一个构建后工具,它需要目标jar文件列表的位置。 对于这些位置,我有一个在目标列表上运行的方面(分别针对每个目标使用--aspects),并获取每个目标的jar文件路径 我已设法在每个目标的输出文件夹中的自定义输出文件(例如jar.txt)中获取每个jar文件路径 但这意味着我需要分别检查每个jar.txt文件以获得位置 有没有办法将jar文件路径累积到单个文件中? 比如: 尝试使用方面中的append命令写入同一输出文件夹。我不确定是否可以共享输出文件夹 创建一个依赖于所有相关目标的

Bazel 如何知道genrule中的编译模式

我正在使用bazel构建我的android项目。我需要访问一个环境变量DEBUG(自定义)来确定BuildConfig.DEBUG的值应该是多少,但是我在Bazel的文档中找不到任何关于这个的描述。巴泽尔支持这一点吗?或者我能做些什么来达到我的目的 非常感谢您的帮助 PS:我正在使用genrule规则生成我的BuildConfig.java,但是BuildConfig.DEBUG的值应该由环境变量DEBUG确定: genrule( name = "build-config-genrule

Bazel-skylark操作能否读取命令行标志(strict_java_deps)

我正在为scala规则实现类似于strictJavaDeps的特性。 如果使用warn或error,我希望能够在运行时进行配置 我似乎记得skylark规则无法创建和访问命令行标志,但我不记得它们是否可以访问现有的标志 主要区别在于,现有的标记已经被解析,因此可能也会在某些ctx中传递。您想要的标记(strict\u java\u deps)目前无法通过Skylark获得。但是,我们没有理由不能将其添加到跟踪中 对于其他标志,上下文可以访问配置片段,配置片段可以访问一些已解析的命令行标志。我认为

如何获取给定Bazel目标的输出文件?

理想情况下,我想要一个目标的输出文件列表,而不需要构建。我想这应该是可能的使用cquery运行后期分析,但不知道如何。这里的“输出文件”到底是什么意思?您的意思是想知道在命令行上构建目标时生成的文件吗 您希望在什么时候获得此信息?是否确实要调用bazel query命令来获取此信息,还是希望在分析过程中使用它?我认为没有办法使用bazel query,来获得输出文件的确切预期绝对路径(甚至是工作区相对路径,例如,bazel out/foo/bar/baz.txt) 这可能比你想要的要复杂一些,但

“cc_测试”和“bazel测试”到底有什么作用?

在使用bazel之前,我总是需要以下代码来启动所有测试 ::testing::GTEST_FLAG(output) = "xml"; ::testing::GTEST_FLAG(output) = "xml:./test_detail.xml" ::testing::InitGoogleTest(&argc, argv); int iRet = RUN_ALL_TESTS(); 但是cc_测试和bazel测试似乎不需要这个,它只需要测试代码 那么,cc_测试和bazel测试ready做

在Bazel中查看配置值

调试Bazel生成文件时,了解系统默认打开的值或通过主机/目标设置确定的值(例如调试选择规则)可能会很有用 是否有办法通过查询或直接在构建文件中查看平台和其他配置值(如cpu、os等) 是否也可以生成所有这些变量的列表?有许多不同的配置选项可用,很容易忘记其中的内容以及它们可能被设置为什么(例如,crosstool\u top、host\u crosstool\u top等)。这不是一个完美的答案,但是在命令行中添加--toolchain\u resolution\u debug标志可以让您看到

Bazel 以字符串形式获取相对于生成文件的文件路径

我正在使用,我想传递一些参数。其中一些参数是指向文件的路径:我的源代码,因此我可以获取覆盖率信息。有一个args参数被传递到PEX pytest可执行文件: pex_pytest( name = "test", srcs = glob(["**/*_test.py"]), args = [ "--cov=path/to/code", "--cov-config=path/to/.coveragerc", ], deps =

选择性地部署Bazel构建的工件

我通过bazel build生成工件。我只想在这些工件发生更改时部署它们 检测工件是否改变的最佳方法是什么 …有没有办法获取构建目标的摘要?理想情况下不需要构建它?这里的方法在很大程度上取决于所有细节 一种方法是使用构建事件协议进行设置: 这可能比您想要处理的设置更多 另一种方法是使用genrules或类似方法散列您感兴趣的所有工件(我不知道如何让bazel输出工件散列)。然后创建一个二进制文件(sh_binary,或其他文件),将您感兴趣的所有工件及其哈希值作为输入,并将这些哈希值与部署的哈

如何将数组从Bazel cli传递到规则?

假设我有这样一条规则 foo( name = "helloworld", myarray = [ ":bar", "//path/to:qux", ], ) 在这种情况下,myarray是静态的。 但是,我希望它由cli提供,比如 bazel run//:helloworld--myarray=“:bar,//path/to:qux,:baz,:other” 这怎么可能 感谢为了得到您想要的东西,Bazel需要在Starlark定义的命令

Bazel Tensorflow非建筑物

我按照给出的说明设置我的机器以运行SyntaxNet。我已经安装了所有必需的软件,并确保版本与说明相同。但是当我使用命令bazel test--linkopt=-headerpad\u max\u install\u names syntaxnet/…运行bazel测试时。。。util/utf8/…在我的Mac OS上,每次都会失败。我收到以下错误消息 将SIGTERM发送到以前的Bazel服务器(pid=42104)。。。正在将SIGKILL发送到上一个Bazel服务器进程组(pid=4210

编译C++;带Bazel的代码因“错误”而失败;“参数列表太长”;

我有一个庞大的项目,它由许多绑定在一起的库(DEP)组成 编译时,Bazel创建著名的虚拟包含,并为编译器添加相应的-iquotes/-I 由于此列表非常大,编译器失败并出现以下错误: /my/path/to/the/toolchain/cc1': execv: Argument list too long 我确实尝试删除堆栈上的限制,当前ARG_MAX为: jbasila@fedora $ getconf ARG_MAX 4611686018427387903 实现此功能的一个好方法可能是

Bazel工作区中有条件的新本地库

我有一些预先构建的第三方库,我必须将它们包含在我的Bazel构建中。所以我在我的工作区中有这样的东西: new_local_repository( name = "thirdparty", path = ".install/OSX/DEBUG", build_file = "bazel/BUILD.third_party", ) 而BUILD.third\u party看起来像: cc_library( name = "glog", srcs = ["glog

使用bazel构建bazel而不使用“---compilation\u mode opt”标志如何影响性能?

建议从源代码构建bazel的两种方法: bazel构建//src:bazel--编译模式=opt bazel构建//src:bazel开发 文件上说,第一个: 生成较小的二进制文件,但构建速度较慢 但是是否有任何性能优势,或者该选项只影响大小?Bazel(4.0)内部由客户端和服务器组成。客户端(前端)很小,与重型Bazel服务器(后端)通信。微型客户端是用C++编写的,重型BAZEL服务器(后端)是用java编写的。 编译模式=opt只影响C/C++代码的生成。优化的构建通常比调试或快速构建运

从Maven标准目录到Bazel的测试资源映射

我们在src/test/resources中有测试依赖项文件。当测试类通过(例如)获取这些测试文件时,这些测试文件最终位于JAR和类路径中 在Bazel中,依赖于测试文件并将其显示在类路径中的首选方式是什么 我的src/test/resources/BUILD中有以下内容: filegroup( name = "test-deps", testonly = 1, srcs = glob(["*.txt"]), visibility = ["//visibility

Bazel 特性中出现文件组的意外数据\u运行文件

我有这样一个方面: def _foo_aspect_impl(target, aspect_ctx): fail("KIND: {}, DATA_RUNFILES: {}".format(aspect_ctx.rule.kind, [p.path for p in target.data_runfiles.files])) 它失败并出现错误: KIND: filegroup, DATA_RUNFILES: [<hugelistofsrcsfiles>] 让我困惑的是,我从

Bazel 有没有办法在genrule的路径中包含一个带有bang(!)的文件?

我有一个iOS框架,它依赖于(大概是谷歌维护的)pod,名为“!“原型编译器”。为了构建我的框架,我需要在沙箱中使用它。因此,我有一个genrule,可以尝试将其包含在 src=glob(['Pods/!ProtoCompiler/***'))但我得到以下错误: 错误:BUILD:2:1://Foo:framework调试:无效标签'Pods/!“genrule”规则中属性“srcs”的元素1118中的ProtoCompiler/google/protobuf/any.proto:目标名称“Po

Bazel 调度C++;将生成的文件转换为SRC和HDR

在Bazel官方文档中,有一个解释如何创建一个Java库,该库由常规Java文件和由:gen_Java_srcs规则生成的文件构建。为了便于阅读,我在此处重写了此代码: java_library( name = "mylib", srcs = glob(["*.java"]) + [":gen_java_srcs"], deps = "...", ) genrule( name = "gen_java_srcs", outs = [ "F

将整个apt存储库作为bazel的目标公开?

我想在Bazel中创建docker图像。我们当前的构建在docker构建中进行了大量的apt-get,以引入包及其依赖项。这并不理想,因为构建系统没有跟踪我们需要的实际上游包的真正概念 但是-我们绝对不想手动尝试解析和排序deb包docker映像中的每个依赖项 是否有一个模块或方法允许我将apt get install[东西]的等价物引入构建环境,该环境也会自动拉下它所依赖的包(这样我就可以通过各种提取函数将它们安装到docker映像中) 理想的结束状态是Bazel依赖树根据其各自的存储库为我跟

从命令行设置bazel调用\u id

默认情况下,bazel每次调用都生成UUID 我们正在使用的一些工具使用此Id将其实体链接到特定的bazel调用 是否有一个巴泽尔旗来强制我们自己的身份而不是巴泽尔的? 我查看了bazel官方文档,但没有找到一个您可以将--invocation\u id=MY\u id传递给任何bazel命令以覆盖调用id

为什么bazel不在BEP中包含失败繁殖操作的退出代码?

我试着在bazel附近做工具,试着调查BEP 当查看失败的操作时,似乎有一个用于退出代码的字段,它包含在标准bazel输出的文本中,但不在BuildEvent协议中 bazel中的示例行: 错误:/Users/endobson/proj/racket/yaspl2/libraries/BUILD:703:1:无法生成文件库/resolved-imports-language-test_lib.o:yasplcomile库/resolved-imports-language-test_lib.o失

Bazel 从配置文件中读取规则参数值

考虑在工作区文件中编写的以下bazel规则: container_pull( name = "release-base", registry = "mydockernet:9443", repository = "release-base", digest = "sha256:...", tag = "1.8.2", ) 问题是标记值1.8.2写在yamlconfig文件中,我们希望尊重DRY原则(从config文件读取值,而不是复制bazel文件中的值

Bazel动作图动作中的中间人助记符

我用Bazel动作图来观察幕后发生了什么。我使用的是V1(analysis.proto),图形看起来很完整,除了使用“Middleman”助记符的操作之外,其他一切都是有意义的。我到处都找过了,没有提到这个助记符。助记符本身非常奇怪,因为它没有做任何具体的事情。我已粘贴了下图的一个版本: artifacts { id: "0" exec_path: "bazel-out/k8-fastbuild/internal/_middlemen/_S_Smain_Ch

Bazel java_工具构建的gtest依赖关系?

我在这里尝试按照投稿人的说明进行操作: 我有一个成功的master构建(即bazel build//src:bazel),但文档也建议“您可能想要构建bazel使用的各种工具。”我正在尝试这样做,例如: cd src/java_tools/singlejar bazel build //... 但它在以下方面失败了: ERROR: /Users/.../bazel/third_party/protobuf/3.2.0/BUILD:621:1: no such target '//extern

Bazel 如何";适当地;通过Starlark从usr/bin调用可执行文件?

在我的一条规则中,我想通过unzip-d解压一个文件,以便访问一些标题 目前,我正在使用路径上的任何解压来实现这一点 ctx.actions.run( ... executable = "unzip", ) 或者,我可以使用/usr/bin/unzip来避免依赖我的路径。然而,不清楚惯用的方法应该是什么。根据我对文档的阅读,理想情况下,我会为规则调用的解压设置一些排序Bazel二进制目标。不过,现在还不清楚我将如何定义二进制目标,也许是一个sh_binary正确的解决方

“bazel fetch”是否支持排除目标?

bazel fetch是否支持排除某些目标,例如。g bazel fetch -- //... -//some/target/... 不幸的是,它似乎不起作用: ERROR: syntax error at '- //some/target/...' 对于bazel build来说,使用“减号运算符”(-)排除目标似乎是可行的

Google Bazel ECCN

有人能确认此软件是否属于ECCN类别吗?如果是,请确认适用的号码 如果没有,请回答以下问题,以便进行自我评估: 1、软件是否执行任何加密或使用任何加密过程?是/否 2.如果问题1的答案为“是”,请说明加密是编码到应用程序中还是单独调用(如使用SSL) 3.如果问题1的答案是肯定的,请说明加密/加密服务的功能 A、 版权保护目的(包括使用许可证密钥/代码) B、 用户身份验证目的 C、 加密数据库等功能的核心部分 D、 加密软件和主机系统之间的通信 背景资料: 出口管制分类号(ECCN)是一种特定

是否从Bazel中的工作区创建依赖项列表?

我想为每个Bazel项目维护一个依赖项及其版本的列表 如何查询生成规则所依赖的工作区规则?如何访问包含的属性 编辑我想根据生成规则查询的内容。因此,如果我有多个规则,我只需要基于我要求的规则的工作区信息。我这样做的方式是以单独的格式保存工作区DEP,迭代它们,然后构建一个降价文档 看 可能有一种方法可以通过genquery和native.existing_规则来实现,但我还没有尝试过 嗯,, 保罗谢谢,我先使用了pubref规则,但希望尽可能接近bazel回购规则。他们在理解巴泽尔和云雀方面仍然

Bazel-任何给定规则使用哪些提供者的最佳文档?

我正在编写一个自定义规则,该规则从cc_库、cc_二进制、apple_静态_库以及其他一些特定于平台的规则中获取输入。我想在自定义规则的实现函数中通过引用ctx.attr.foo查看提供给我的每个API 这里有一个提供者列表,但没有说明哪些规则正在使用它们 查看这些规则为我提供的内容是否有最佳做法,或者是否需要检查每个规则的源代码?您可以使用获取给定目标的提供者列表。类似这样的内容有助于调试: def\u print\u attrs\u impl(ctx): 对于ctx.attr.targets

Bazel:outputRoot和--disk_缓存关于本地缓存的关系如何?

我看到bazel在~/.cache/bazel下放置了大量资产。考虑到这已经是一个缓存,当您有两个目录包含一个工作区文件并构建几乎相同的内容时,--disk\u cache标志的用法是什么。如果没有--disk\u cache,两个工作区都将在~/.cache/bazel中拥有自己的缓存工件,并且使用--disk\u cache它们可以共享工件 正如皮亚斯顿指出的那样: 您可以使用--disk\u cache,而无需设置远程缓存。你可以 如果需要,甚至可以使用--disk\u cache=~/.

如何设置bazel工作区?

我试图让bazel为一个颤振项目构建一个jar和一个so文件,但每次我在命令提示符中输入'bazel build'时,我都会得到 错误:只有在具有工作区文件的目录下的工作区中才支持“build”命令。 请参阅上的文档 我读过一些文档,看起来解决方案是创建一个名为“WORKSPACE”的空白文件,但我不明白这个文件应该存储在哪里。这是我读过的文档的链接 提前谢谢 工作区文件将转到工作区源的根目录。它是所有构建包的顶级目录,也是您使用//引用的绝对路径的起点。例如,如果您有一棵这样的树: . ├──

  1    2   3   4   5   6  ... 下一页 最后一页 共 14 页