почему устанавливать framework «install Directory» на «@executable_path/../Frameworks»

#objective-c #xcode #cocoa

#objective-c #xcode #cocoa

Вопрос:

при создании фреймворка cocoa в Xcode 5.1.1,

предлагается добавить

«установить каталог» на «@executable_path /../Frameworks»

который присутствует в пути Xcode: «Настройка сборки-> Развертывание-> Каталог установки».

Мой вопрос в том, почему мы устанавливаем «install Directory» на «@executable_path / ../ Frameworks».

Ответ №1:

Apple говорит об этом лучше всего здесь, но ключевая фраза:

Статический компоновщик записывает имена файлов каждой из зависимых библиотек во время привязки приложения. Это имя файла известно как имя установки динамической библиотеки.

Другими словами, установка имени установки указывает динамическому компоновщику, где найти зависимую библиотеку во время выполнения.

(Статический компоновщик является ld , который используется во время разработки для связывания исполняемого файла, и динамический компоновщик является /usr/lib/dyld , который используется во время выполнения для загрузки зависимых библиотек).

Тем не менее, я предпочитаю установить имя установки на @rpath/nameOfLibrary.dylib , а затем установить путь запуска исполняемого файла на @executable_path/../Frameworks . Это создает библиотеку, зависящую от пути выполнения, которую я счел более удобной в большинстве случаев.