我的程序取决于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"
手动推荐:
食谱绝不应直接填充Sysroot:
推荐方法是(Poco食谱应该做类似的事情(:
文件应安装到标准位置:
...
do_install() {
...
install -d ${D}${includedir}
install -m 0755 ${S}/myapi.h ${D}${includedir}/
...
}
...
而不是,包括 poco食谱作为 foo.bb 的构建依赖性:
依赖 =" poco"
正常编译。
我们可以使用提供商和 user 为了说明这种情况,软件包(食谱(提供了一个标题文件,要由另一个文件使用软件包(食谱(是提供者,软件包(食谱(使用来自另一个软件包(食谱(的标头文件是 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食谱,它应该起作用。
您可以使用 DEPENDS
具有" poco"的依赖关系。食谱,它将建立和填充" Poco"食谱的标题和液体进入您的食谱的Sysroot。
您必须使用FILES_*( * - package type)