У меня есть проект, который построен CMake и я хочу пакет с щелчок. Проект включает в себя исполняемый файл и библиотеку (давайте позвоним Это и либа).
мой snapcraft.yaml файл выглядит так:
name: a
version: "0.9"summary: xyz
description: xyz
grade: devel # must be 'stable' to release into candidate/stable channels
confinement: strict
apps:
a:
command: a
parts:
a:
plugin: cmake
source: ./a.zip
filesets:
manpages: [ usr/share/man ]
В CMake, зависит от либа (по факту это просто «обертка» либа для использования в скриптах bash). Когда я собираю проект с помощью Snapcraft и устанавливаю этот пакет (установка как —опасно), бегущая команда с терминала работает нормально. Но когда я пытаюсь построить приложение в зависимости от либа (с помощью НКУ), у меня проблема, которая заканчивается/ usr / bin / x86_64-linux-gnu-ld: не могу найти -la«Сообщение об ошибке. Прежде всего, я должен включить заголовки, даже если они были установлены по умолчанию в системе включают использование каталога-I / оснастка / A / тока …«(Я понимаю, что оснастка устанавливает файлы в /щелчок/ каталог, но, возможно, я просто делаю что-то не так с snapcraft.yaml). Тогда я получаю сообщение от л.д. выше.
Я абсолютно новый в пакетах оснастки, это мой первый проект. Есть ли возможность установить либа как системная библиотека (видимая при сборке с gcc, используя include из системного каталога по умолчанию)?
Может быть, это поможет расколоть а также либа в разные пакеты с зависит от сборки либа, но я не уверен, что это поможет с проблемой установки общей библиотеки.
Есть ли у вас опыт с этой проблемой? Любой совет? Спасибо за ответы.
Боюсь, снимки не очень хорошо подходят для того, что вы пытаетесь сделать. Они отлично подходят для приложений конечного пользователя (например, обертка, которая делает lib полезной в скриптах), но по своей конструкции они изолированы от остальной части системы. В них можно отправлять библиотеки для использования из других приложений, но эти приложения должны будут искать библиотеки и заголовки где-то в /snap/<snap name>/current/
, который определенно не находится на пути поиска по умолчанию.
Других решений пока нет …