我的程序取决于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"
答案 0 :(得分:1)
手册建议:
食谱永远不要直接填充sysroot:
推荐的方式是(poco食谱应该做类似的事情):
文件应安装在标准位置:
...
do_install() {
...
install -d ${D}${includedir}
install -m 0755 ${S}/myapi.h ${D}${includedir}/
...
}
...
然后,将 poco食谱包含为 foo.bb 的构建依赖项:
DEPENDS + =“ poco”
并正常编译。
答案 1 :(得分:0)
我们可以使用 provider 和 user 来说明这种情况,程序包(配方)提供了要由另一个程序包(配方)使用的头文件,即提供者,该包(配方)使用另一个包(配方)中的头文件就是用户。
首先,我们更改提供者的配方( 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/
}
...
第二,我们更改用户的配方( 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"
...
最后,重建myprovider.bb和myuser.bb食谱,它应该可以工作。