Cmake с bitbake и конкретным каталогом установки

У меня проблема с установкой моей цели в определенный каталог с помощью управляемой сборки 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.

Кто-нибудь из вас подскажет здесь?

мета-примечание: @tsyvarev Раньше я тоже ссылался на мета-пост «нет, спасибо, черт возьми», но я переключился на использование meta.stackexchange.com/a/131011/997587. он покрывает больше земли и передает ту же точку.

starball 11.05.2023 09:53

В вашем рецепте bitbake вы должны иметь возможность установить EXTRA_OECMAKE для передачи параметров в cmake, например. EXTRA_OECMAKE= "--install-prefix /mydir".

0RR 11.05.2023 10:30

Таким образом, он развертывается в правильном каталоге в системе сборки, но не развертывается в цели с помощью 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. Это не так, если используется префикс по умолчанию.

RScAut 11.05.2023 11:02

Возможно, попробуйте FILES:${PN} = /my/specific/directory/my-appсм. здесь Либо это будет FILES_${PN}, либо FILES:${PN} в зависимости от того, какую версию yocto вы используете.

0RR 11.05.2023 11:18

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

RScAut 11.05.2023 11:34

Я рад, что это помогло, я добавлю это как ответ. Я все еще учусь с Yocto, но мне очень помог IRC-канал #yocto.

0RR 11.05.2023 11:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
6
108
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В вашем рецепте 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 может быть весьма полезным, как мне кажется.

Другие вопросы по теме