snapcraft рабочей области catkin не может найти общий файл заголовка

Я использую плагин catkin для snapcraft. Я использую его в рабочей области ros из нескольких пакетов по мере необходимости. Это рабочее пространство построено с помощью сережек.

Однако при использовании snapcraft сборке не удается найти заголовочный файл, который должен использоваться совместно локальными пакетами с помощью объявления catkin_package() в CMakeLists.txt.

есть ли какие-либо известные причины, по которым это не удастся. Поскольку это произошло для ряда файлов заголовков, на которые ссылаются пакеты с помощью catkin


person rocklegend    schedule 27.10.2017    source источник
comment
Обратите внимание, что подключаемый модуль Catkin использует Catkin, а не Catkin Tools (хотя надстройка Catkin Tools была только что завершена и появится в следующем выпуске). Можете ли вы убедиться, что это рабочее пространство создано с помощью Catkin?   -  person kyrofa    schedule 27.10.2017
comment
Я не должен понимать разницу между сережками и сережками. Я использую «$ catkin build» для создания рабочей области. это не серёжка?   -  person rocklegend    schedule 27.10.2017
comment
Я добавил ненайденный заголовок для установки, и теперь другие пакеты могут его найти. Кажется, что пакет snapcraft catkin не создает пространство разработки так же, как это делают другие вызовы catkin?   -  person rocklegend    schedule 27.10.2017
comment
Нет, инструменты catkin — это бета-инструмент, предназначенный для улучшения Catkin, который является нормальная система сборки ROS1. Не похоже, что это была ваша проблема - я попытался объяснить больше в своем ответе.   -  person kyrofa    schedule 27.10.2017


Ответы (1)


Это упоминается как в документах ROS на snapcraft.io, так и в руководство по оснастке на wiki.ros.org , хотя я предложил следующее уточнение первому:

Большинству разработчиков ROS не хватает пространства devel. В результате легко забыть о важности хороших правил установки, то есть правил установки каждого компонента пакета, необходимого для запуска, или каждого компонента, необходимого для использования данной библиотеки. Пакеты Catkin, которые вы создаете, должны иметь хорошие правила установки, иначе Snapcraft не будет знать, какие компоненты поместить в оснастку. Убедитесь, что вы установили двоичные файлы, библиотеки, файлы заголовков, файлы запуска и т. д.

То же самое касается любого способа упаковки. У вас должны быть хорошие правила установки.

person kyrofa    schedule 27.10.2017
comment
мы используем установленные пакеты для запуска нашей машины, поэтому все необходимое для выполнения есть. Однако зависимости сборки обычно используют пространство разработки в случаях, которые я упомянул. Побочным продуктом неиспользования пространства разработки для сборки пакетов является то, что они не будут собираться, а сборка snapcraft будет болезненным процессом, несмотря на то, что в процессе установки находится все, что необходимо для использования во время выполнения. - person rocklegend; 28.10.2017
comment
Извините, но обычно пакеты catkin зависят от сборки и времени выполнения. иногда эти зависимости строятся одновременно. При обычном использовании, если пакет зависит от заголовка в другом пакете для сборки. Тогда он может не зависеть от него во время выполнения и может просто ссылаться на общую библиотеку. Эти зависимости обрабатываются в рабочей области разработки во время сборки. Однако теперь я хочу развернуть свой стек для клиентов с помощью оснастки, и мне нужно включить в среду выполнения артефакты (эти заголовки, которые создают зависимости), которые требуются только во время сборки. Это требует значительных затрат. - person rocklegend; 28.10.2017
comment
Я не согласен с тем, как работает ros. Я копирую свой каталог установки на своего робота, и он работает. Так что в моей спецификации установки нет ничего плохого. Я не понимаю, почему плагин catkin не может быть построен как обычное рабочее пространство catkin. Решит ли это добавление --merge в catkin_make_isolated? - person rocklegend; 28.10.2017
comment
Боюсь, мы не можем общаться в комментариях, нам следует перейти в IRC, если вы хотите продолжить. - person kyrofa; 28.10.2017