Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 Don';除非明确指定,否则不包括默认生成的cc_库_Bazel - Fatal编程技术网

Bazel Don';除非明确指定,否则不包括默认生成的cc_库

Bazel Don';除非明确指定,否则不包括默认生成的cc_库,bazel,Bazel,默认情况下,在执行bazel构建…时,我有一些不想包含的目标。如何标记它们,使它们在通过“bazel build//a/b/c:foo”显式构建之前不会被构建?您可以向每个目标添加一个可选标记,并使用--build\u tag\u fitlers。下面是bazel帮助构建的内容--long说: --生成标记过滤器(以逗号分隔的选项列表;默认值:“”) 指定以逗号分隔的标记列表。每个标记可以是可选的 前面带有“-”以指定排除的标记。只有这些目标才会被取消 至少包含一个包含的标记且不包含任何 排除的

默认情况下,在执行
bazel构建…
时,我有一些不想包含的目标。如何标记它们,使它们在通过“bazel build//a/b/c:foo”显式构建之前不会被构建?

您可以向每个目标添加一个可选标记,并使用--build\u tag\u fitlers。下面是bazel帮助构建的内容--long说:

--生成标记过滤器(以逗号分隔的选项列表;默认值:“”)

指定以逗号分隔的标记列表。每个标记可以是可选的 前面带有“-”以指定排除的标记。只有这些目标才会被取消 至少包含一个包含的标记且不包含任何 排除的标签。此选项不影响使用执行的测试集 "测试"命令,;这些由测试筛选选项控制, 例如“--test_tag_filters”

假设这是您的生成文件:

cc_library(
    name = "target1",
    hdrs = [...],
    srcs = [...],
)

cc_library(
    name = "target2",
    hdrs = [...],
    srcs = [...],
    tags = [
        "optional"
    ],
)

cc_library(
    name = "target3",
    hdrs = [...],
    srcs = [...],
    tags = [
        "optional"
    ],
)
通过在标记名之前添加
-
,可以排除带有可选标记的所有目标

bazel build ... --build_tag_filters=-optional
如果希望这成为项目的默认行为,可以将其添加到
.bazelrc

build --build_tag_filters=-optional
编辑:

有几个标签有特殊的含义。一个标签是手动。默认情况下,它将执行我上面描述的操作,但由于它只提到了测试目标,因此可能是一个bug或未记录

手动关键字将强制测试目标不包括在目标模式通配符中(
:*
:all
,等等);测试目标既不会生成也不会运行。它也将被未明确提及此测试的
测试套件
规则忽略。构建或运行此类测试的唯一方法是通过命令行上的显式目标模式指定它


谢谢,我还发现手动标记在默认情况下跳过目标,除非手动构建哇,你是对的!bazel只提到了测试目标。我会更新我的答案。