在 Buck 中,如何将 genrule 的输出用作 header 的 cxx_library?

In Buck, how do I used the output of a genrule as a header for a cxx_library?

我有一个 genrule 可以使用专有工具生成 C++ header-file。然后在 cxx_library 中使用 header。查看 this presentation 中的代码,我尝试了以下操作:

cxx_library(
  name = 'my-library',
  srcs = glob(['src/**/*.cpp']),
  exported_headers = {
    'my_header.h': genfile('my-header.h'),
  },
  ...

但是,genfile 似乎已被弃用。我应该改用什么?

您只需指定 build target of the genrule 代替 genfile('my-header.h')

genrule(
  name='my-header',
  cmd='some_command.py',
  out='my-header.h',
)

cxx_library(
  name = 'my-library',
  srcs = glob(['src/**/*.cpp']),
  exported_headers = {
    'my_header.h': ':my-header',
  },
  ...
)