假设我有以下依赖链,依赖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中了。