У меня проблема с установкой моей цели в определенный каталог с помощью управляемой сборки cmake и bitbake (yocto).
В CMakeLists.txt я хочу использовать раздел install() для развертывания моей цели в определенном каталоге, например. /my/specific/directory.
В CMakeLists.txt это выглядит так:install(TARGETS "${PROJECT_NAME}" RUNTIME DESTINATION my/specific/directory).
Таким образом, в рецепте bitbake не было бы необходимости реализовывать раздел установки.
По умолчанию cmake использует prefix, полученный из bitbake.conf и указывающий на /usr. Поэтому моя цель установлена в /usr/my/specific/directory.
В документации cmake я нашел возможность изменить префикс:
DESTDIR, чтобы перезаписать префиксcmake --install . --prefix /my/install/prefixВ обоих случаях я понятия не имею, как мне реализовать это в рецепте bitbake, чтобы это имело эффект при выполнении задачи do_install.
Кто-нибудь из вас подскажет здесь?
В вашем рецепте bitbake вы должны иметь возможность установить EXTRA_OECMAKE для передачи параметров в cmake, например. EXTRA_OECMAKE= "--install-prefix /mydir".
Таким образом, он развертывается в правильном каталоге в системе сборки, но не развертывается в цели с помощью yocto: ERROR: <my-app>-1.0-r0 do_package: QA Issue: <my-app>-cmake: Files/directories were installed but not shipped in any package: /my/specific/directory/my-app. Это не так, если используется префикс по умолчанию.
Возможно, попробуйте FILES:${PN} = /my/specific/directory/my-appсм. здесь Либо это будет FILES_${PN}, либо FILES:${PN} в зависимости от того, какую версию yocto вы используете.
Да, это работает. Мне интересно, почему это не нужно, когда я использую префикс по умолчанию. Но на данный момент это работает!
Я рад, что это помогло, я добавлю это как ответ. Я все еще учусь с Yocto, но мне очень помог IRC-канал #yocto.





В вашем рецепте bitbake вы должны иметь возможность установить EXTRA_OECMAKE для передачи параметров в cmake, например. EXTRA_OECMAKE= "--install-prefix /mydir".
Но тогда с ошибками, касающимися Files/directories were installed but not shipped in any package:, вы можете настроить bitbake для установки файлов, используя:
FILES:${PN} = "/mydir"
(Или FILES_${PN} для более старых версий Yocto). Смотрите здесь.
Могут быть и другие способы добиться того же, IRC-канал #yocto может быть весьма полезным, как мне кажется.
мета-примечание: @tsyvarev Раньше я тоже ссылался на мета-пост «нет, спасибо, черт возьми», но я переключился на использование meta.stackexchange.com/a/131011/997587. он покрывает больше земли и передает ту же точку.