2011-12-13 4 views
3

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

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

+0

Я открыл инцидент DTS об этом, и ответ был таким, что в настоящее время это невозможно с отправкой версии Xcode. Я оставлю этот вопрос открытым, если кто-то выяснит, как это сделать в будущей версии. –

ответ

11

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

+0

Спасибо, это было именно то, что мне нужно! –

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