Как включить статическую зависимость библиотеки в шаблон Xcode?
Я могу включить такую фреймворк в файл TemplateInfo.plist:
<key>Frameworks</key>
<array>
<string>QuartzCore</string>
<string>OpenGLES</string>
<string>OpenAL</string>
<string>AudioToolbox</string>
<string>AVFoundation</string>
<string>UIKit</string>
<string>Foundation</string>
<string>CoreGraphics</string>
</array>
Но я не могу найти, как сделать что-то подобное со статическими библиотеками. Это значительно улучшит мой шаблон. Существуют ли такие функции?
Ответы
Ответ 1
Я нашел решение.
В templateInfo.plist добавить ключ Цели → SharedSettings
<key>OTHER_LDFLAGS</key>
<string>ObjC -all_load -weak_library /usr/lib/libz.dylib ..</string>
Он добавляет ваш dylib для отладки и запуска настроек.. не работает с автозаполнением, так как xcode может работать с фреймворками, но все равно намного лучше, чем делать вручную
EDIT: expalin
<key>Targets</key>
<array>
<dict>
<key>Dependencies</key>
<array><integer>0</integer></array>
<key>Frameworks</key>
<array>
<string>CoreAudio</string>
</array>
<key>SharedSettings</key>
<dict>
<key>OTHER_LDFLAGS</key>
<string>-ObjC -all_load -weak_library /usr/lib/libz.dylib -weak_library /usr/lib/libstdc++.dylib </string>
</dict>
</dict>
Ответ 2
Лучший способ, который я нашел для этого, - создать псевдоним в каталоге /usr/lib внутри вашей папки шаблонов. Оттуда вы можете получить доступ ко всем libs, которые находятся в /usr/lib, даже те, которые являются самими псевдонимами.
Сначала я создаю шаблоны, редактируя .plists в XCode, а не редактируя сами представления xml. Итак, как я объясню шаги, которые я предпринял для включения статических библиотек в мой шаблон.
1) У меня есть шаблон проекта:
iPhoneOS.platform/Разработчик/Library/Xcode/Шаблоны/Шаблоны проектов/Приложение/C4 Application.xctemplate
(В Xcode 4.3 Шаблоны проектов/Приложение можно найти непосредственно в Xcode.app, щелкнув правой кнопкой мыши на пакете и выбрав "Показать содержимое пакета" )
![image]()
Кишки этой папки выглядят следующим образом:
![image]()
2) Как вы можете видеть на изображении выше, я создал псевдоним для папки lib (/usr/lib
), который содержит статические библиотеки, и переместил псевдоним в мою папку .xctemplate.
![image]()
3) В моем файле TemplateInfo.plist я указываю 2 вещи: словарь и Node. Я помещаю их в Определения и Узлы TemplateInfo.plist
![image]()
Во-первых, в определениях node я указываю словарь:
Libs/libalias.dylib
Внутри этой библиотеки у меня есть 2 строки
Группа: Модераторы
Путь: lib/libalias.dylib
node выглядит следующим образом:
![image]()
Важно, чтобы синтаксис был именно таким, и самое главное, что имя самого Словаря указывает библиотеку, которую вы хотите импортировать. В этом случае я импортирую библиотеку libalias.dylib.
Также важно, чтобы Path был lib/libalias.dylib, потому что это укажет на псевдоним, который указывает на вашу папку /usr/lib.
Во-вторых, в массиве Nodes я указываю элемент как строку, которая называется Libs/libalias.dylib(обратите внимание: точное имя, указанное в словаре, указанном в Определениях)
![image]()
Вот что должен выглядеть элемент node.
4) После того, как вы настроите эти настройки, вы можете создать новый проект с уже включенным lib.
![image]()
ПРИМЕЧАНИЕ: потому что я назвал свой словарь Libs/... и указал его Group as Libs, библиотека, которую я импортирую, появляется в подпапке под названием Libs в моем Навигаторе проектов.