Я пытаюсь сделать что-то довольно простое и типичное, которое использует динамически связанные библиотеки в моем проекте Xcode, а затем развертывает все необходимые библиотеки.
Однако я должен делать что-то не так, потому что Xcode 8 не позволит мне вставлять файлы .dylib, только фреймворки! На рисунке ниже показано, что происходит, когда я пытаюсь добавить что-либо в Embedded Binaires, dylib просто не отображаются, а Add Other... добавляет их в проект, но не в встроенные двоичные файлы.
Должен быть очень простой способ сделать это, но я просто не могу его найти...
Эпилог
По-видимому, так как мне нужно запустить script, который вызывает install_lib_tool
, я сделал довольно универсальный script, который изменит все, что имеет /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
Тогда все, что требуется, это добавить шаг Run script после копирования dylibs, чтобы просто запустить его без аргументов (переменные среды содержат все необходимое).