Buck支持headers文件夹同名吗?

Does Buck support headers with the same name as folders?

我正在尝试使用 构建 Eigen。不幸的是,Eigen 有一个不寻常的结构 headers:

Eigen/src/Cholesky/LLT.h
Eigen/src/Cholesky/LDLT.h
Eigen/src/Cholesky/...
Eigen/src/...
Eigen/Array
Eigen/Cholesky
Eigen/Core
Eigen/...
...

您可以浏览the repo on GitHub

我需要在导出的 headers 中包含 Eigen/CholeskyEigen/Cholesky/LLT.h,但 Buck 认为这是一个冲突:

prebuilt_cxx_library(
  name = 'eigen',
  header_only = True,
  header_namespace = 'Eigen', 
  exported_headers = subdir_glob([
    ('Eigen', '*'),
    ('Eigen/src', '**/*.h'),
  ]), 
  visibility = [
    'PUBLIC',
  ],
)

java.nio.file.FileAlreadyExistsException: .../eigen/buck-out/gen/eigen#default,headers/Eigen/Cholesky

如何在 Buck 中拥有与导出 headers 同名的文件夹和文件?

src 文件夹应该是导出的一部分,试试这个:

prebuilt_cxx_library(
  name = 'eigen',
  header_only = True,
  header_namespace = 'Eigen', 
  exported_headers = subdir_glob([
    ('Eigen', '*'),
    ('Eigen', 'src/**/*.h'),
  ]), 
  visibility = [
    'PUBLIC',
  ],
)