标题库使用介子

  • 本文关键字:标题 c++ meson-build
  • 更新时间 :
  • 英文 :


有谁能帮我理解一下吗?我正在编写一个头文件库'foo',结构如下:

p>li>meson.build
  • include/foo.hpp
  • foo/meson.build
  • foo/bar.hpp
  • 详情如下:

    (文件:meson.build)

    project('foobar', 'cpp',
    version: '0.1.0',
    default_options: ['cpp_std=c++20']
    )
    project_headers = []
    subdir('include')
    install_headers(project_headers, preserve_path: true)
    

    [文件:包括/meson.build]

    project_headers += files('foo.hpp')
    subdir('foo')
    

    [文件:包括/foo/meson.build]

    project_headers += files('bar.hpp')
    

    我的问题是为什么在安装过程中,foo.hpp和bar.hpp都安装在同一个目录中,即使使用preserve_path: true应该保留子目录结构?

    使用preserve_path时,介子从文件名中提取目录。下面是install_headers()的代码:

    ...
    if kwargs['preserve_path']:
    for file in source_files:
    dirname = os.path.dirname(file.fname)
    dirs[dirname].append(file)
    else:
    dirs[''].extend(source_files)
    ...
    

    https://github.com/mesonbuild/meson/blob/e2c454b86e5fcb2dbbabe33199dc4b877dcdb95d/mesonbuild/interpreter/interpreter.py L2228

    在您的示例中,bar.hppfname将是bar.hpp,因此将没有路径。子目录由files()存储,但保存在不同的属性中。我不能评论为什么要这样实施。我不是一个Meson开发者。

    Meson发行说明中的示例显示了文件名中包含的路径:

    https://mesonbuild.com/release笔记- - 0 - 63 - 0. - html # added-preserve_path-arg-to-install_headers

    相关内容

    • 没有找到相关文章

    最新更新