В Yocto, как включить заголовочные файлы из других рецептов - PullRequest
0 голосов
/ 26 апреля 2018

Моя программа зависит от рецептов 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"

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Руководство рекомендует:

Рецепты никогда не должны заполнять sysroot напрямую:

Рекомендуемый способ (рецепт poco должен делать что-то похожее):

Файлы должны быть установлены в стандартные местоположения:

...
do_install() {
...
    install -d ${D}${includedir}
    install -m 0755 ${S}/myapi.h ${D}${includedir}/
...
}
...

Чем включать рецепт poco в качестве зависимости для сборки foo.bb :

DEPENDS + = "poco"

И компилировать нормально.

0 голосов
/ 20 марта 2019

Мы можем использовать провайдера и пользователя , чтобы проиллюстрировать этот случай, пакет (рецепт) предоставляет файл заголовка, который будет использоваться другим пакетом (рецептом), является провайдером, пакет (рецепт) использует заголовочный файл из другого пакета (рецепт) пользователь .

Сначала мы изменим рецепт провайдера ( 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, все должно заработать.

...