Включение фреймворка без встраивания его в комплект приложения - PullRequest
1 голос
/ 07 декабря 2011

Я все еще не уверен на 100% в процессе связывания фреймворка, но из того, что я видел здесь раньше, никто не задавал подобный вопрос, возможно, потому что это может быть глупый вопрос, но я попробую в любом случае.

В моем текущем проекте X-Code я использую пользовательский фреймворк, например example.framework. На данный момент, насколько мне известно, для того, чтобы программа работала со средой, мне нужно иметь ее либо в / Library / Frameworks, либо мне нужно скопировать ее в ресурсы пакета в сборке. фаза.

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

Заранее спасибо! Любые предложения также приветствуются!

1 Ответ

1 голос
/ 07 декабря 2011

Платформа Mac OS X - это, по сути, разделяемая библиотека, то есть отдельный двоичный файл.

Обычно, когда запускается ваш главный исполняемый файл, ОС загружает framework / dylib в память и отображает символы, чтобы ваш главный исполняемый файл мог получить к ним доступ.

Обратите внимание, что framework / dylib (входит в приложение или нет), не должен содержать файлы заголовков, так как они нужны только во время компиляции.

С Xcode вы можете фактически решить, следует ли включать файлы заголовков, когда вы копируете платформу в ее установочный каталог (см. Этапы сборки).

enter image description here

Если вы не скопируете заголовочные файлы, люди не смогут использовать ваш framework / dylib (если, конечно, они не перепроектируют его).

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

Статическая библиотека - это отдельный объектный файл (обычно .a), который «включается» в ваш конечный двоичный файл во время ссылки.

Таким образом, у вас есть только один двоичный файл, содержащий код из библиотеки и вашего проекта.

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