我如何告诉 bazel 链接预编译(静态)库?
我引用了一个现有的静态库项目(xy.BUILD):
cc_library(
name="xy",
srcs=["lib/x86_64/libxy.a"],
hdrs=["include/xy.h"],
includes=["include"],
#linkstatic=True, <---- *1
#alwayslink=True,
visibility=["//visibility:public"],
)
在另一个项目(BUILD)中:
cc_library(
name="myxylib",
hdrs=["myxylib.h"],
srcs=["myxylib.c"],
visibility=["//visibility:public"],
deps=["@xy//:xy"],
linkopts = ["-pthread",
#"-Lexternal/xy/lib/x86_64/", <---- *2
#"-lxy",
#"-z defs"
],
)
...作为外部依赖项(WORKSPACE 中的 new_local_repository)。我可以使用头文件并将代码编译为 .so 库,但是共享对象中缺少静态库中的符号,因为 bazel 不会自动为依赖。有没有办法让 bazel 自动执行此操作?我已经尝试了注释 *1 中的参数,但这没有帮助。
我对手动设置 -L 和 -l 标志感到非常不舒服,因为我将不得不支持不同的架构,并且我更愿意为依赖于架构的不同库设置路径,而不是在每个继承的工件中重复它。