Я пытаюсь сделать что-то довольно простое и типичное, которое использует динамически связанные библиотеки в моем проекте Xcode, а затем развертывает все необходимые библиотеки.Создание Xcode встроенных необходимых dylibs
Однако я должен делать что-то не так, потому что Xcode 8 не позволит мне вставлять файлы .dylib, только рамки! Ниже показано, что происходит, когда я пытаюсь добавить что-либо к Embedded Binaires, dylib просто не отображаются, а Add Other ... добавляет их в проект, но не в Embedded Binaries.
Там должно быть очень простой способ сделать это, но я просто не могу найти его ...
Эпилог
Таким образом, очевидно, так как мне нужно, чтобы запустить скрипт, вызывающий install_lib_tool
Я сделал довольно универсальный скрипт, который изменит все, что имеет /local/
по пути к пути встроенной копии:
#!/bin/sh
app=$BUILT_PRODUCTS_DIR/$EXECUTABLE_PATH
fw_path=$BUILT_PRODUCTS_DIR/$FRAMEWORKS_FOLDER_PATH
app_dyl_list=(`ls $fw_path | grep dylib`)
function change_paths {
local bin=$1
echo change_path $bin
dyl_list=(`otool -L $bin | grep local | awk '{print $1}'`)
for dyl in ${dyl_list[*]}; do
libname=$(basename $dyl)
libname=${libname%%.*}
actual_libname=(`ls $fw_path | grep $libname | xargs basename`)
install_name_tool -change $dyl "@executable_path/../Frameworks/$actual_libname" $bin
printf "\t%s edited\n" $actual_libname
done
}
change_paths $app
for dyl_bin in ${app_dyl_list[*]}; do
change_paths $fw_path/$dyl_bin
done
Затем все, что требуется, - это добавление шага запуска скрипта после копирования dylib, чтобы просто запустить его без аргументов (переменные среды содержат все необходимое).
Я пробовал это, к сожалению, при запуске приложения он по-прежнему ищет dylib в исходном/usr/local/lib/location, игнорирует встроенные dylib и не запускается должным образом. Вы знаете, как обойти эту проблему? –
Обновлен мой ответ. Надеюсь, это поможет. –
Спасибо, однако это все еще не работает, dylibs скопированы правильно, но пути остаются неизменными, см. Этот скриншот http://i.imgur.com/nuN3o3w.png –