Bazel:使用宏从列表生成构建规则

时间:2018-09-25 12:03:18

标签: c build macros bazel

我是Bazel的新手,并且对Bazel宏有疑问。我正在寻找构建我们构建的最佳方法。

是否可以遍历包含构建规则细节的列表? 例如,我有一个包含srcs,deps,hdrs,name等的列表。此列表组合成一个较大的列表,其中包含我要创建的创建一个组件的所有模块。

如果可能的话,有人可以举一个简短的示例,说明代码中的外观吗?

感谢您的时间

1 个答案:

答案 0 :(得分:1)

好吧,我明白了

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]

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

SrcLists文件的示例:

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

执行bazel构建:all