ここに私がやろうとしたことがありますが、うまくいきます。便利だと思いますが、ハックのように感じるので、将来壊れるのではないかと心配しています.
私は大規模なプロジェクトを Bazel に変換することに取り組んでおり、次のような多くのローカル ラッパーがあります。
my_cc_library(name='a', srcs=['lib.c'])
my_cc_binary(name='b', deps=['a'], srcs=['main.c'])
これには多くのload
コマンドが必要であり、煩わしく、繰り返し発生するエラーの原因となります。通常の Python であれば、モジュール全体をインポートするだけです。しかし、Skylark では関数を 1 つずつロードする必要があります。
構造体を使用して、個々のロードの必要性を取り除くことができます。
でmy.bzl
:
def _my_cc_library(...): ...
def _my_cc_binary(...): ...
my = struct(cc_library=_my_cc_library, cc_binary=_my_cc_binary)
さまざまなBUILD
ファイルで:
load('//my.bzl', 'my')
my.cc_library(name='a', srcs=['lib.c'])
my.cc_binary(name='b', deps=['a'], srcs=['main.c'])
上にも書きましたが、すべてうまくいきます。ネイティブ ルールのラッパーやその他のさまざまな機能に if を使用できます。
しかし、私は言語を乱用していますか?将来壊れる可能性はありますか?
ありがとう。