2012-04-14 3 views
1

При открытии файла ObjectieGitFramework.xcodeproj я могу успешно скомпилировать схему iOS. Однако потребовалось много экспериментов. Давайте начнем с самого начала - как я это сделал.Включая библиотеку ObjectiveGit в приложение iOS

Что я сделал:

Сначала я клонировал вилку ObjectiveGit.

git clone [email protected]:Eonil/objective-git.git --recurse-submodules 
cd objective-git 
cd ./Scripts/libgit2-make-ios/; sh ./download-make-clean-deploy.sh "./../../libgit2.a"; cd ../.. 

Src: https://github.com/libgit2/objective-git/pull/54

Открытие проекта и строительство в настоящее время приводит к одной ошибки и одного предупреждения. Я разрешаю Xcode автоматически обновлять параметры проекта для разрешения предупреждения. Errors

Теперь я иду в каталог libgit2 и построить с помощью cmake:

$ mkdir build && cd build 
$ cmake .. 
$ cmake --build . 

Src: https://github.com/libgit2/libgit2

Этот результат, помимо всего прочего, в файле libgit2.0.15.0.dylib создается. Image of the file in finder

Я перетаскиваю его в Xcode и добавляю его в ObjectiveGit и цель iOS. Теперь перейдите на вкладку фазы сборки для ObjectiveGit-прошивки и сделать его выглядеть следующим образом:

enter image description here

Проблема

В этот момент я мог бы построить проект, и я мог бы создать классы в нем успешно используется ObjectiveGit. Однако, когда я перетащил проект в другой проект, добавил ObjectiveGit-iOS в качестве целевой зависимости и добавил libObjectiveGit-iOS.a в link binary with libraries Я не смог импортировать ObjectiveGit/ObjectiveGit.h плюс я получал некоторые другие странные ошибки (см. Изображения ниже). Я очень мало разбираюсь в библиотеках в xcode, поэтому я совсем не знаю, почему это не работает.

enter image description here enter image description here

Теперь это ошибка у меня один раз, но не больше. Я не знаю, что я делал, чтобы вызвать это. enter image description here

Update

$(SRCROOT)/frameworks/ObjectiveGit/Classes 
$(SRCROOT)/frameworks/ObjectiveGit/libgit2/include 
$(SRCROOT)/frameworks/ObjectiveGit/Classes/Categories 

При добавлении этого к header search path что-то странное происходит. Это приводит к тому, что файлы не будут найдены, кроме 70 других ошибок Mach-o.

«`

ответ

1

Динамические библиотеки не поддерживаются iOS. Вы должны использовать статические библиотеки.

Чтобы быть ясным: Конечно, iOS поддерживает динамические библиотеки, но только те, которые распространяются яблоком.

+0

Что относительно статической библиотеки, которая сама содержит динамическую библиотеку? Не могли бы это работать, если бы можно было включить dylib (libgit2) в статический 'ObjectiveGit'? –

+1

Это ничего не изменит, потому что libgit2.dylib не будет доступен на устройстве. Почему бы вам просто не скомпилировать libgit2 static? –

+1

Теперь я чувствую себя очень, очень глупо. Я не знаю, почему я этого не делал. Я сделал это сейчас, и, похоже, он работает нормально, но я не могу точно сказать, из-за каких-то ошибок mach-o с libz, которые работают над ними. –

Смежные вопросы