在 Yocto 中,如何包含来自其他配方的头文件

Amu*_*umu 6 yocto

我的程序依赖于poco提供头文件和共享库的配方。但是,我无法使用poco配方中的头文件,这会导致错误Poco/Delegate.h: No such file for directory.

如何在构建时为我的软件包提供标头?

这是一个示例食谱:

SUMMARY = ""
DESCRIPTION = ""
AUTHOR = ""
LICENSE = "CLOSED"
LIC_FILES_CHKSUM = ""
HOMEPAGE = ""
BUGTRACKER = ""

S = "${WORKDIR}"

SRC_URI = " file://foo.cpp \
            file://CMakeLists.txt \
"

inherit pkgconfig cmake

DEPENDS_foo = "poco"
RDEPENDS_foo = "poco"

do_install() {
    install -d ${D}/${bindir}
    install -m 755 ${S}/foo ${D}/${bindir}
}

FILES_${PN} = "${bindir}/foo"
Run Code Online (Sandbox Code Playgroud)

Zep*_*hyr 3

我们可以用provider和user来说明这种情况,包(recipe)提供一个头文件供另一个包(recipe)使用就是provider ,包(recipe)使用另一个包(recipe)的头文件就是用户.

首先我们更改提供程序的配方(myprovider.bb)以导出头文件 - myapi.h,

...
do_install() {

    install -d ${D}/${bindir}
    install -m 755 ${B}/hello_provider ${D}/${bindir}

    install -d ${D}${libdir}/lib_myprovider/
    install -m 0755 ${WORKDIR}/myapi.h ${STAGING_DIR_TARGET}${libdir}/lib_myprovider/
}
...
Run Code Online (Sandbox Code Playgroud)

其次,我们更改用户的配方(myuser.bb)以引用头文件 - myapi.h

...
do_compile () {    

    ${CC} ${WORKDIR}/main.c -o hello_user ${CFLAGS} ${LDFLAGS} -I${STAGING_DIR_TARGET}/${libdir}/lib_myprovider/ 
}

# file dependency declaration
FILES_${PN} = "${libdir}/lib_myprovider"

# package dependency declaration
DEPENDS += "myprovider"
...
Run Code Online (Sandbox Code Playgroud)

最后,重建 myprovider.bb 和 myuser.bb 食谱,它应该可以工作。