2016-09-01 6 views
2

プラットフォーム固有のフラグをbazelに含める方法は?Bazelプラットフォーム固有のC++定義

変更したいクロスプラットフォームのライブラリがあるとします。

defines = ["FEATURE_A"] 
if somehow_detect_the_platform == 'ios': 
    defines.extend("FEATURE_B") 

cc_library(
    name = "foo", 
    srcs = ["foo.cc"], 
    defines = defines, 
    hdrs = ["foo.h"], 
) 

はまた、など

答えて

1

CFLAGS、ソース、ヘッダ、2つのオプションがありますが含まれるように、この概念は他のものにも適用できることに注意してください。

は、我々のような何かを行うことができます。最初はselect functionを使用しています。 selectを使用すると、現在の構成に応じて属性の値を条件付きで設定できます。

第2の選択肢は、CROSSTOOL設定ファイルを調整することです。具体的には、ツールチェーンに応じて異なるフラグを出力するfeatureを入力します。次に、features属性のcc_libraryでその機能を有効にすることができます。

第1のオプションはより簡単で、第2のオプションはより堅牢でカプセル化されています。

関連する問題