如何转发介子中的依赖关系?



假设我有以下依赖链,依赖A依赖于B, B依赖于c。所有3个都被指定为dep对象。

B的头文件包含c的头文件

我发现当我编译A时,即使B已经被列为依赖项,我也必须将C列为显式依赖项,否则C的头文件在A的翻译单元中不可用。

我怎么能指示meson自动包括C的头,无论B被用作依赖?

我认为你需要使用declare_dependency
这样应该可以工作。

C_dep = declare_dependency(include_directories : C_includes)
B_dep = declare_dependency(include_directories : B_includes, dependencies : [C_dep])
A_dep = static_library('a_lib', dependencies : [B_dep]) # or whatever your usecase is

你必须指定你的C依赖,通过include_directories包含头路径:

c_dep = declare_dependency(
  dependencies: c_lib,
  include_directories: include_directories(c_inc_dirs),
)

然后在你的B依赖中添加C,像这样:

b_deps = []
b_deps += dependency('clib', fallback:['clib', 'c_dep'])
b_dep = declare_dependency(
    link_with: b_lib,
    include_directories: b_inc_dirs,
    dependencies: b_deps)

A也应该添加正常的依赖于B,而不是C,因为C已经添加到B中了。

相关内容

  • 没有找到相关文章

最新更新