У меня есть приложение Какао в качестве проекта XCode, которое имеет несколько дополнительных битов функциональности в качестве целей dylib.
Когда XCode собирает проект, он помещает все выходные данные сборки в одну папку: пакет .app и файлы dylib. А при запуске из отладчика XCode запускается .app.
Однако я не могу запустить приложение из Finder.
Как настроить XCode для «развертывания» приложения в автономном состоянии? Я обнаружил, что могу использовать ld
в реальном двоичном файле приложения для указания относительного пути к dylibs: @executable_path/../../mylib.dylib
Запуск сценария после каждой сборки кажется неправильным: должен быть какой-то способ (который я полностью отсутствует) сделать это легко изнутри XCode - это должно быть распространенной проблемой, конечно?
Похоже, что XCode поддерживает использование @executable_path, @loader_path и @rpath, используемых в настройке Target Info> Build> Linking> Dynamic Library Install Name (LD_DYLIB_INSTALL_NAME).
Текст справки гласит: «Устанавливает внутренний« путь установки »(LC_ID_DYLIB) в динамической библиотеке. Любые клиенты, связанные с библиотекой, будут записывать этот путь как способ, которым dyld должен найти эту библиотеку» *
Это кажется очень многообещающим, но удобство использования является проблемой, если мне нужно связать dylibs по нескольким путям с общей библиотекой - относительный путь будет отличаться каждый раз.
Запустив свой testapp из поиска, я получаю следующий (соответствующий) текст ошибки
Dyld Error Message:
Library not loaded: @executable_path/../../util.dylib
Referenced from: /Volumes/data/Code/TestApp/build/Debug/TestApp.app/Contents/MacOS/TestApp
Reason: image not found
util.dylib находится в / Volumes / data / Code / TestApp / build / Debug /, поэтому я запутался: /