2016-09-01 1 views
2

Comment doit-on inclure un indicateur spécifique à la plate-forme dans bazel?C++ spécifique à la plate-forme Bazel définit

Disons que nous avons une bibliothèque multiplate-forme sur laquelle nous voulons changer.

Peut-on faire quelque chose comme:

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"], 
) 

Notez également que ce concept peut appliquer à d'autres choses comme comprend, cflags, sources, en-têtes, etc.

Répondre

1

Il y a 2 options. La première utilise select function. Avec select, vous pouvez conditionnellement définir la valeur d'un attribut en fonction de la configuration actuelle.

La deuxième option consiste à tordre le fichier de configuration CROSSTOOL, mettre un feature spécifique qui émettrait différents drapeaux en fonction de la chaîne d'outils. Vous pouvez ensuite activer cette fonctionnalité dans votre attribut cc_library dans features.

La première option est plus simple, la seconde est plus robuste et plus encapsulée.