Включение libsqlite3 dylib в шаблон проекта Xcode 4 - PullRequest
3 голосов
/ 13 декабря 2011

Я создал шаблон проекта Xcode 4 для iOS, который опирается на несколько фреймворков и libsqlite3.dylib.Мне удалось автоматически добавить фреймворки, но я не могу понять, как добавить dylib.Кому-нибудь повезло с этим?

Редактировать:
Полагаю, я недостаточно ясен, я создал свой собственный файл .xcodetemplate, который появляется как шаблон проекта при создании нового проекта.Мне нужно знать, что поместить в файл TemplateInfo.plist, чтобы файл libsqlite3.dylib был включен в новые проекты, созданные из шаблона.Я успешно смог добавить файлы .framework, такие как CoreMotion, перечислив их под ключом Targets-> Item 0-> Frameworks, но это не работает для dylibs.

1 Ответ

11 голосов
/ 05 января 2012

Я нашел способ сделать это через настройки проекта «Другие флаги компоновщика».Чтобы связать каркас sqlite3.0.dylib, просто добавьте узел в свой TemplateInfo.plist в Project-> SharedSettings с ключом «OTHER_LDFLAGS» и значением «-lsqlite3.0».

Обратите внимание, что это будетпереопределите все «Другие флаги компоновщика» для шаблона проекта, которые многие люди используют для таких флагов, как -ObjC;поэтому, если вы хотите сохранить эти флаги, просто составьте список всех флагов, которые вы хотите, с пробелом между ними.IE: если вы хотите, чтобы шаблон вашего проекта включал флаг компоновщика ObjC и sqlite, просто установите значение узла "-ObjC -lsqlite3.0".

Для тех из вас, кому интересно, как я понял этоЯ добавил фреймворк sqlite3.0.dylib в свой проект вручную, используя вкладку «Фазы сборки» моей цели, а затем собрал проект.Затем я посмотрел на детали сборки, нажав на вкладку журнала навигатора в XCode.Затем я щелкнул по самой последней сборке, чтобы увидеть ее детали, и расширил раздел «ссылка» деталей сборки, нажав на кнопку раскрытия подробностей в самой правой части текста.Там я увидел список всех библиотек и фреймворков, с которыми он связывал:

    /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 -arch i386 -isysroot 
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk 
-L/Users/me/Library/Developer/Xcode/DerivedData/myapp
-fkymetsrapomrohkudesnxrchwdq/Build/Products/Debug-iphonesimulator 
-F/Users/me/Library/Developer/Xcode/DerivedData/myapp
-fkymetsrapomrohkudesnxrchwdq/Build/Products/Debug-iphonesimulator 
-F/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/Developer/Library -filelist /Users/me/Library/Developer/Xcode/DerivedData/myapp
-fkymetsrapomrohkudesnxrchwdq/Build/Intermediates/myapp.build/Debug
-iphonesimulator/myapp.build/Objects-normal/i386/myapp.LinkFileList 
-mmacosx-version-min=10.6 
-Xlinker -objc_abi_version 
-Xlinker 2 -ObjC -D__IPHONE_OS_VERSION_MIN_REQUIRED=40000 
-framework UIKit -framework Foundation -framework CoreGraphics -framework CoreLocation -framework CFNetwork -framework MediaPlayer -framework MessageUI -framework MobileCoreServices -framework QuartzCore -framework SystemConfiguration -lsqlite3.0 
-o /Users/me/Library/Developer/Xcode/DerivedData/myapp-fkymetsrapomrohkudesnxrchwdq/Build/Products/Debug-iphonesimulator/myapp.app/myapp

В списке фреймворков я нашел "-lsqlite3.0" в качестве одной из связанных библиотек.Добавление «lsqlite3.0» к другим связанным библиотекам в основном делает то же самое.Если есть какие-либо другие фреймворки dylib, которые вы хотите добавить в свой шаблон, просто следуйте тому же процессу: добавьте их на этапы сборки вашей цели, проверьте скрипт сборки, чтобы увидеть, как библиотека на самом деле вызывается во время компоновки, а затем добавьте их вваш список OTHER_LDFLAGS в вашем TemplateInfo.plist.

ПРИМЕЧАНИЕ. Добавление библиотек таким способом не добавит каркасы в пользовательский интерфейс фаз сборки в XCode, но все равно будет правильно связывать их.

...