プリコンパイル済み (静的) ライブラリをリンクするように 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 がこれを自動的に行うようにする方法はありますか? コメント *1 のパラメーターは既に試しましたが、役に立ちません。
-L フラグと -l フラグを手動で設定することに非常に違和感を覚えます。これは、異なるアーキテクチャをサポートする必要があり、アーキテクチャに依存する異なるライブラリのパスを、継承されたアーティファクトごとに繰り返すのではなく、1 つだけ設定することを好むためです。