Как я могу заставить bitbake найти мои библиотеки? - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь создать рецепт в yocto / bitbake, но у меня проблемы с зависимостями сборки.Некоторые из этих зависимостей сборки не будут развернуты на цели - они просто статически связаны во время сборки.Таким образом, мой проект должен иметь определенные статические библиотеки и проекты, собранные перед его сборкой.Они указаны в рецепте как «DEPENDS», и они построены правильно.

Однако, когда мой проект пытается запустить часть cmake в do_configure, вывод cmake жалуется, что не может найти библиотеки, которые имеютуже был создан.Можно ли как-нибудь ссылаться на пакеты в рецепте, чтобы битбэйк мог найти библиотеки?Или есть лучший способ как-то сообщить cmake, где найти нужные ему файлы?

Рецепт, созданный recipetool

# This is the basis of a recipe and may need further editing in order to be fully functional.
# (Feel free to remove these comments when editing.)

# Unable to find any files that looked like license statements. Check the accompanying
# documentation and source headers and set LICENSE and LIC_FILES_CHKSUM accordingly.
#
# NOTE: LICENSE is being set to "CLOSED" to allow you to at least start building - if
# this is not accurate with respect to the licensing of the software being built (it
# will not be in most cases) you must specify the correct value before using this
# recipe for anything other than initial testing/development!
LICENSE = "CLOSED"
LIC_FILES_CHKSUM = ""

SRC_URI = "git://[path to git project].git;protocol=ssh"

# Modify these as desired
PV = "[Version]+git"
SRCREV = "[Revision]"

S = "${WORKDIR}/git"

DEPENDS = "libnl libtins cmake protobuf protobuf-c libnl jsoncpp"
noinst_LIBRARIES = "
inherit cmake

# Specify any options you want to pass to cmake using EXTRA_OECMAKE:
EXTRA_OECMAKE = ""

do_configure () {
    cd ${S}
    cmake -DCMAKE_BUILD_TYPE=debug -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DARCHIVE_INSTALL_DIR=. -G "Unix Makefiles" .
}

Вывод:

Log data follows:
| DEBUG: Executing python function externalsrc_configure_prefunc
| DEBUG: Python function externalsrc_configure_prefunc finished
| DEBUG: Executing shell function do_configure
| Protobuf autogeneration STARTED
| Protobuf autogeneration FINISHED
| -- Found Protobuf: Protobuf_LIBRARY-NOTFOUND;-lpthread (found version "2.6.1")
| -- Found Protobuf: Protobuf_LIBRARY-NOTFOUND;-lpthread;-lpthread (found version "2.6.1")
| CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
| Please set them or make sure they are set and tested correctly in the CMake files:
| GENL_LIBRARY
|     linked by target "[project 1]" in directory [yocto dir]/build/workspace/sources/[my project]
|     linked by target "[project 2]" in directory [yocto dir]/build/workspace/sources/[my project]
| JSON_LIBRARY
|     linked by target "[project 1]" in directory [yocto dir]/build/workspace/sources/[my project]
|     linked by target "[project 2]" in directory [yocto dir]/build/workspace/sources/[my project]
| NL_LIBRARY
|     linked by target "[project 1]" in directory [yocto dir]/build/workspace/sources/[my project]
|     linked by target "[project 2]" in directory [yocto dir]/build/workspace/sources/[my project]
| Protobuf_LIBRARY
|     linked by target "[project 1]" in directory [yocto dir]/build/workspace/sources/[my project]
|     linked by target "[project 2]" in directory [yocto dir]/build/workspace/sources/[my project]
| TINS_LIBRARY
|     linked by target "[project 1]" in directory [yocto dir]/build/workspace/sources/[my project]
|     linked by target "[project 2]" in directory [yocto dir]/build/workspace/sources/[my project]
| 
| -- Configuring incomplete, errors occurred!
| See also "[yocto dir]/build/workspace/sources/[my project]/CMakeFiles/CMakeOutput.log".
| WARNING: exit code 1 from a shell command.
| ERROR: Function failed: do_configure (log file is located at [yocto dir]/build/tmp/work/[target]/[my project]/[version]+git-r0/temp/log.do_configure.24245)

1 Ответ

0 голосов
/ 12 февраля 2019

Ручной вызов cmake в do_configure не является хорошей практикой.См. руководство :

Когда вы используете CMake, ваш рецепт должен наследовать класс cmake, и ваш рецепт не должен содержать задачу do_configure.Вы можете внести некоторые коррективы, установив EXTRA_OECMAKE для передачи любых необходимых параметров конфигурации, специфичных для рецепта.

Причина, по которой OE добавляет важные параметры, такие как пути и файл цепочки инструментов, к вызову cmake, см. cmake.bbclass .

Пожалуйста, попробуйте удалить do_configure и добавьте свои пользовательские аргументы в EXTRA_OECMAKE.

...