我们有一个RPC项目。它使用bazel构建。在这个工场里,它还有一些其他的项目。喜欢
http_archive(
name = "com_github_google_crc32c", # 2021-10-05T19:47:30Z
build_file = "//bazel:third_party/crc32c/BUILD.bazel",
sha256 = "ac07840513072b7fcebda6e821068aa04889018f24e10e46181068fb214d7e56",
strip_prefix = "crc32c-1.1.2",
urls = ["https://github.com/google/crc32c/archive/1.1.2.tar.gz"],
)load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
genrule(
name = "crc32c_config_h",
srcs = ["src/crc32c_config.h.in"],
outs = ["crc32c/crc32c_config.h"],
cmd = """
sed -e 's/#cmakedefine01/#define/' \
""" + select({
"@//bazel/config:brpc_with_sse42": """-e 's/ HAVE_SSE42/ HAVE_SSE42 1/' \
""",
"//conditions:default": """-e 's/ HAVE_SSE42/ HAVE_SSE42 0/' \
""",
}) + select({
"@//bazel/config:brpc_with_glog": """-e 's/ CRC32C_TESTS_BUILT_WITH_GLOG/ CRC32C_TESTS_BUILT_WITH_GLOG 1/' \
""",
"//conditions:default": """-e 's/ CRC32C_TESTS_BUILT_WITH_GLOG/ CRC32C_TESTS_BUILT_WITH_GLOG 0/' \
""",
}) + """-e 's/ BYTE_ORDER_BIG_ENDIAN/ BYTE_ORDER_BIG_ENDIAN 0/' \
-e 's/ HAVE_BUILTIN_PREFETCH/ HAVE_BUILTIN_PREFETCH 0/' \
-e 's/ HAVE_MM_PREFETCH/ HAVE_MM_PREFETCH 0/' \
-e 's/ HAVE_ARM64_CRC32C/ HAVE_ARM64_CRC32C 0/' \
-e 's/ HAVE_STRONG_GETAUXVAL/ HAVE_STRONG_GETAUXVAL 0/' \
-e 's/ HAVE_WEAK_GETAUXVAL/ HAVE_WEAK_GETAUXVAL 0/' \
< $< > $@
""",
)
cc_library(
name = "crc32c",
srcs = [
"src/crc32c.cc",
"src/crc32c_arm64.cc",
"src/crc32c_arm64.h",
"src/crc32c_arm64_check.h",
"src/crc32c_internal.h",
"src/crc32c_portable.cc",
"src/crc32c_prefetch.h",
"src/crc32c_read_le.h",
"src/crc32c_round_up.h",
"src/crc32c_sse42.cc",
"src/crc32c_sse42.h",
"src/crc32c_sse42_check.h",
":crc32c_config_h",
],
hdrs = [
"include/crc32c/crc32c.h",
],
copts = select({
"@//bazel/config:brpc_with_sse42": ["-msse4.2"],
"//conditions:default": [],
}),
strip_include_prefix = "include",
visibility = ["//visibility:public"],
)
cc_test(
name = "crc32c_test",
srcs = [
"src/crc32c_arm64_unittest.cc",
"src/crc32c_extend_unittests.h",
"src/crc32c_portable_unittest.cc",
"src/crc32c_prefetch_unittest.cc",
"src/crc32c_read_le_unittest.cc",
"src/crc32c_round_up_unittest.cc",
"src/crc32c_sse42_unittest.cc",
"src/crc32c_test_main.cc",
"src/crc32c_unittest.cc",
],
deps = [
":crc32c",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
] + select({
"@//bazel/config:brpc_with_glog": ["@com_github_google_glog//:glog"],
"//conditions:default": [],
}),
)我们必须为它编写构建文件。但是当我们想要使它成为外部依赖时,bazel就无法构建它。

有人知道怎么解决吗?是的,我想也许加点scrpt是个好主意?也许我觉得一些scrpt可以解决它。
发布于 2022-11-15 07:08:14
错误消息声明@com_github_madler_zlib丢失。您需要这种外部依赖,例如将其添加到WORKSPACE文件中:
http_archive(
name = "com_github_madler_zlib",
build_file = "//zlib.BUILD",
sha256 = "629380c90a77b964d896ed37163f5c3a34f6e6d897311f1df2a7016355c45eff",
strip_prefix = "zlib-1.2.11",
urls = ["https://zlib.net/zlib-1.2.11.tar.gz"],
)和zlib.BUILD
load("@rules_cc//cc:defs.bzl", "cc_library")
licenses(["notice"]) # BSD/MIT-like license (for zlib)
_ZLIB_HEADERS = [
"crc32.h",
"deflate.h",
"gzguts.h",
"inffast.h",
"inffixed.h",
"inflate.h",
"inftrees.h",
"trees.h",
"zconf.h",
"zlib.h",
"zutil.h",
]
_ZLIB_PREFIXED_HEADERS = ["zlib/include/" + hdr for hdr in _ZLIB_HEADERS]
# In order to limit the damage from the `includes` propagation
# via `:zlib`, copy the public headers to a subdirectory and
# expose those.
genrule(
name = "copy_public_headers",
srcs = _ZLIB_HEADERS,
outs = _ZLIB_PREFIXED_HEADERS,
cmd = "cp $(SRCS) $(@D)/zlib/include/",
)
cc_library(
name = "zlib",
srcs = [
"adler32.c",
"compress.c",
"crc32.c",
"deflate.c",
"gzclose.c",
"gzlib.c",
"gzread.c",
"gzwrite.c",
"infback.c",
"inffast.c",
"inflate.c",
"inftrees.c",
"trees.c",
"uncompr.c",
"zutil.c",
# Include the un-prefixed headers in srcs to work
# around the fact that zlib isn't consistent in its
# choice of <> or "" delimiter when including itself.
] + _ZLIB_HEADERS,
hdrs = _ZLIB_PREFIXED_HEADERS,
copts = select({
"@bazel_tools//src/conditions:windows": [],
"//conditions:default": [
"-Wno-unused-variable",
"-Wno-implicit-function-declaration",
],
}),
includes = ["zlib/include/"],
visibility = ["//visibility:public"],
)https://stackoverflow.com/questions/74441681
复制相似问题