12

我可以在 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>

但我找不到如何用静态库做类似的事情。这将大大改进我的模板。有这样的功能吗?

4

2 回答 2

7

我找到了解决方案。

在 templateInfo.plist 添加关键 Targets --> SharedSettings

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

它将您的 dylib 添加到调试和运行设置.. 不能像 xcode 对框架一样使用自动完成功能,但仍然比手动完成要好得多

编辑:解释

<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>

于 2012-04-23T04:19:40.073 回答
3

我发现这样做的最佳方法是在模板文件夹中为 /usr/lib 目录创建一个别名。从那里,您可以访问 /usr/lib 中的所有库,甚至那些本身就是别名的库。

首先,我通过在 XCode 中编辑 .plist 来创建模板,而不是通过编辑 xml 表示本身。因此,这就是我将如何解释将静态库包含到模板中所采取的步骤。


1)我有一个项目模板:iPhoneOS.platform / Developer / Library / Xcode / Templates / Project Templates / Application / C4 Application.xctemplate

(在 Xcode 4.3 中,可以通过右键单击包并选择 Show Package Contents 直接在 Xcode.app 中找到项目模板/应用程序)

图片

此文件夹的内容如下所示:

图片

2) 如上图所示,我为/usr/lib包含静态库的 lib 文件夹 ( ) 创建了一个别名,并将别名移动到我的 .xctemplate 文件夹中。

图片

3) 在我的 TemplateInfo.plist 文件中,我指定了两件事:字典和节点。我把它们放在 TemplateInfo.plist 的定义和节点中

图片

首先,在定义节点中,我指定了一个名为:Libs/libalias.dylib 的字典

在这个库里面我有 2 个字符串组:库路径:lib/libalias.dylib

节点如下所示:

图片

语法完全像这样很重要,最重要的是 Dictionary 本身的名称指定了您要导入的库。在这种情况下,我正在导入 libalias.dylib 库。

路径是 lib/libalias.dylib 也很重要,因为这将指向指向 /usr/lib 文件夹的别名。

其次,在 Nodes 数组中,我将一个项目指定为一个名为 Libs/libalias.dylib 的字符串(注意:与我在定义中指定的字典的名称完全相同)

图片

这就是 Node Item 的样子。

4)一旦你设置了这些东西,你可以创建一个已经包含你的库的新项目。

图片

注意:因为我调用了我的 Dictionary Libs/... 并将它的 Group 指定为 Libs,所以我正在导入的库出现在我的项目导航器中名为 Libs 的子文件夹中。

于 2012-04-26T06:35:01.647 回答