Bazel: utiliser des macros pour générer des règles de construction à partir de listes

Je suis nouveau à Bazel et j’ai une question concernant les macros Bazel. Je cherche le meilleur moyen de structurer notre construction.

Est-il possible de parcourir une liste contenant les détails des règles de construction? Par exemple, j’ai une liste contenant srcs, deps, hdrs, name etc. Cette liste est combinée en une liste plus grande contenant tous les modules que je veux construire pour créer un composant.

Si possible, quelqu’un peut-il donner un bref exemple de la manière dont cela pourrait apparaître dans le code?

Merci pour votre temps

OK j’ai compris:

Contenu de Build.bazel:

load(":macro.bzl","buildmacro") load(":SrcList.bzl","SrcLists","CommonDependencies") [buildmacro( current_module_name = Module[0][0], current_module_srcs=Module[1], current_module_hdrs=Module[2], current_module_deps=Module[3] + CommonDependencies, )for Module in SrcLists] 

Contenu de macro.bzl:

 def buildmacro(current_module_name,current_module_srcs,current_module_hdrs,current_module_deps): native.cc_library( name = current_module_name, deps = current_module_deps, srcs = current_module_srcs, hdrs = current_module_hdrs, linkstatic = 1, visibility = ["//visibility:public"], ) 

Exemple de fichier SrcLists:

 listofcode = [["nameofrule"]["srcfiles"]["headers"]["deps"]...] listofcode2 = ... SrcLists = [listofcode] + [listofcode2] ... 

exécuter bazel build: all