Как включить статическую зависимость библиотеки в шаблон Xcode? - PullRequest
12 голосов
/ 09 ноября 2011

Я могу включить такую ​​структуру в файл 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>

Но я не могу найти, как сделать нечто подобное со статическими библиотеками.Это значительно улучшило бы мой шаблон.Есть ли такая функциональность?

Ответы [ 2 ]

7 голосов
/ 23 апреля 2012

Я нашел решение.

В templateInfo.plist добавьте ключ Targets -> SharedSettings

<key>OTHER_LDFLAGS</key>
<string>ObjC -all_load -weak_library /usr/lib/libz.dylib ..</string>

Он добавляет ваш dylib для настройки отладки и запуска .. не работает савтозаполнение, как XCode может делать с фреймворками, но все же намного лучше, чем делать это вручную

РЕДАКТИРОВАТЬ: 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>

3 голосов
/ 26 апреля 2012

Лучший способ, который я нашел для этого, - создать псевдоним в каталоге / usr / lib внутри папки шаблонов. Оттуда вы можете получить доступ ко всем библиотекам в / usr / lib, даже к тем, которые сами являются псевдонимами.

Сначала я создаю шаблоны, редактируя .plists в XCode, а не редактируя сами представления xml. Итак, вот как я буду объяснять шаги, которые я предпринял для включения статических библиотек в мой шаблон.


1) У меня есть шаблон проекта: iPhoneOS.platform / Разработчик / Библиотека / Xcode / Шаблоны / Шаблоны проектов / Приложение / C4 Application.xctemplate

(В Xcode 4.3 шаблоны / приложение проекта можно найти непосредственно в Xcode.app, щелкнув правой кнопкой мыши по пакету и выбрав Показать содержимое пакета)

image

Кишки этой папки выглядят так:

image

2) Как вы можете видеть на изображении выше, я создал псевдоним для папки lib (/usr/lib), которая содержит статические библиотеки, и переместил псевдоним в мою папку .xctemplate.

image

3) В моем файле TemplateInfo.plist я указываю 2 вещи: словарь и узел. Я помещаю их в определения и узлы TemplateInfo.plist

image

Сначала в узле Определения я указываю словарь с именем: Libs / libalias.dylib

Внутри этой библиотеки у меня есть 2 строки Группа: Libs Путь: lib / libalias.dylib

Узел выглядит так:

image

Важно, чтобы синтаксис был в точности таким, как этот, и, самое главное, имя самого словаря определяет библиотеку, которую вы хотите импортировать. В этом случае я импортирую библиотеку libalias.dylib.

Также важно, чтобы Path был lib / libalias.dylib, потому что это будет указывать на псевдоним, который указывает на вашу папку / usr / lib.

Во-вторых, в массиве Nodes я указываю элемент в виде строки, которая называется Libs / libalias.dylib (примечание: то же имя, что и в Словаре, который я указал в определениях)

image

Вот как должен выглядеть элемент узла.

4) После того, как вы настроите все это, вы можете создать новый проект с уже включенной в него библиотекой.

image

ПРИМЕЧАНИЕ: поскольку я назвал свой словарь Libs / ... и указал, что его группа как Libs, библиотека, которую я импортирую, появляется в подпапке с именем Libs в моем Project Navigator.

...