我是 Bazel 新手,有一个关于 Bazel 宏的问题。我正在寻找构建我们的构建的最佳方法。
是否可以迭代包含构建规则细节的列表? 例如,我有一个包含 srcs、deps、hdrs、name 等的列表。该列表被组合成一个更大的列表,其中包含我想要构建的所有模块(创建一个组件)。
如果可能的话,有人可以给出一个简短的例子吗?这在代码中看起来如何?
感谢您的宝贵时间
最佳答案
好的,我明白了:
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 构建:全部
关于c - Bazel:使用宏从列表生成构建规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52497812/