C++ 是否可以通过包含头文件来实现运行时依赖性?

C++ 是否可以通过包含头文件来实现运行时依赖性?,c++,dependencies,bitbake,C++,Dependencies,Bitbake,案例是:有一个称为A的ipk和另一个称为B的ipk。 B对a具有运行时依赖性(根据a的bitbake配方) 但是,B中的源文件具有#include 这看起来像是一个构建依赖项,但我无法向自己解释为什么bitbake配方具有运行时依赖项。 非常感谢您提供的任何帮助,还可以链接到一些说明性教程。回想一下我的经历 如果T依赖于p,则T的do\u configure任务将取决于p 在P的do\u populate\u sysroot任务上 如果T依赖于p,则T的do_build任务依赖于p do\u

案例是:有一个称为A的ipk和另一个称为B的ipk。
B对a具有运行时依赖性(根据a的bitbake配方)
但是,B中的源文件具有
#include

这看起来像是一个构建依赖项,但我无法向自己解释为什么bitbake配方具有运行时依赖项。
非常感谢您提供的任何帮助,还可以链接到一些说明性教程。

回想一下我的经历

  • 如果T依赖于p,则T的
    do\u configure
    任务将取决于p 在P的
    do\u populate\u sysroot
    任务上

  • 如果T依赖于p,则T的
    do_build
    任务依赖于p
    do\u package\u write
    任务

因此,事实上你的B
RDEPENDS
在你的A上意味着A已经 在构建
B
时通过所有阶段,包括
是否填充系统根
。因此,任何导出到sysroot的头文件 在构建B时,将已经存在,并且构建时依赖关系将得到满足

如果B包含由A导出的头,则这是构建时依赖项。但那 不排除B也对a有运行时依赖关系。事实上通常是这样 如果B在运行时依赖于A,那么它也依赖于构建时 在上,正是因为(对于C/C++包)运行时依赖项通常 意味着建筑B需要A的标题

如果你的食谱只在A上指定B
RDEPENDS
,那么它需要一点点 希望成功。如果碰巧是B的
do\u configure
包括检查是否存在a标头,以及所有 游戏中的依赖关系使得B的
do\u配置成为可能
要在A的
do\u populate\u sysroot
完成之前运行,则 检查A标头可能会失败

为了使配方完全正确和安全,它应该同时说明这两个方面 B
r依赖于A,B
依赖于A