Рекомендуемый способ развертывания кросс-платформенного приложения Mac - PullRequest
2 голосов
/ 17 сентября 2010

Я работаю над работой, в которой мы разрабатываем набор кроссплатформенных приложений, использующих C ++, Qt и CMake (среди прочего).На Mac мы сталкиваемся с проблемой, которая заключается в том, что нам нужно упаковать все наши общие библиотеки в каждый .app (в настоящее время их 4), что приводит к довольно быстрому увеличению размера загрузки и установки.

Мы хотим сохранять дружественный подход к Mac, что означает, что мы хотим поддерживать возможность перетаскивания приложений.У кого-нибудь есть идеи, как это сделать, сохраняя при этом общий размер?

В настоящее время проект представляет собой набор из четырех исполняемых файлов или приложений, каждое из которых использует общий набор общих библиотек (qt и in-house).,Существует также набор рубиновых привязок, которые зависят от внутренних библиотек.Я понимаю, что вы, вероятно, могли бы создать Framework и установить его в System / Library / Frameworks, но я пока об этом особо не читал.Такое поведение может привести к потере возможности перетаскивать приложение между компьютерами.

Кто-нибудь знает какие-либо примеры приложений, которые выполняют аналогичные действия на Mac?Любые творческие идеи будут приветствоваться.

1 Ответ

1 голос
/ 17 сентября 2010

Создайте установщик, предпочтительно с использованием стандартного производителя пакетов, который поставляется с инструментами XCode. Наличие установщика для набора приложений не так уж редко. Собственный iWork от Apple имеет установщик и разделяет библиотеки. Создание стандарта .pkg важно, если вы хотите распространять свое приложение среди корпоративных клиентов: ИТ-администратор хотел бы автоматизировать процесс установки удаленно, что возможно для стандарта .pkg, но не в том случае, если вы сами пишете пользовательский установщик .

Что касается размещения файлов, вы должны понимать Домены файловой системы , как описано Apple. По сути, вся структура каталогов повторяется три раза:

/System/    : system domain
/           : local domain
/Users/name : user's domain

Первый зарезервирован Apple. Второе относится к вещам, разделяемым пользователями на машине. Третий - для конкретного пользователя.

Общие объекты помещаются в каталоги, называемые Library. Итак, у нас есть

/System/Library 
/Library
/Users/name/Library

Обычно вы устанавливаете вещи в последние два. Внутри Library каталоги должны быть организованы, как описано здесь . Обычно вы помещаете рамки в

Library/Frameworks/

или

Library/Application Support/your_app/Frameworks/ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...