在Xcode 4项目模板中包含libsqlite3 dylib

3
我制作了一个基于几个框架和libsqlite3.dylib的iOS Xcode 4项目模板。我已经成功自动添加了框架,但似乎无法找到添加dylib的方法。有人能帮忙解决吗?
编辑:
我可能没有表达清楚,我创建了自己的.xcodetemplate文件,当我创建新项目时,它会出现为项目模板。我需要知道在TemplateInfo.plist文件中放置什么内容,以便将libsqlite3.dylib文件包含在从模板创建的新项目中。我已经成功地将.framework文件(如CoreMotion)添加到Targets->Item 0->Frameworks键下,但对于dylibs,这种方法不起作用。

我向DTS提交了一个关于这个问题的报告,并得到的回复是目前使用的Xcode发行版还不支持这种功能。如果有人在未来版本中找到了解决方法,我将保持这个问题的开放状态。 - Jon C
1个回答

11

我发现可以通过“Other Linker Flags”项目设置来实现这一点。要链接sqlite3.0.dylib框架,只需在Project->SharedSettings下的TemplateInfo.plist中添加一个节点,其中Key为“OTHER_LDFLAGS”,Value为“-lsqlite3.0”。

请注意,这将覆盖项目模板的所有“Other Linker Flags”,许多人使用这些标志,例如-ObjC;因此,如果您还想保留这些标志,请列出您想要包含的所有标志,并在它们之间用空格分隔。例如:如果您想让项目模板包括ObjC linker标志和sqlite,则只需将节点的值设置为“-ObjC -lsqlite3.0”。

对于那些好奇我的做法是如何发现的人,我手动将sqlite3.0.dylib框架添加到我的项目中,使用目标的Build Phases选项卡构建项目。然后,我通过单击Xcode中的日志导航器选项卡查看了构建的详细信息。然后,我点击最近的构建以查看其详细信息,并通过单击文本的极右侧的详细披露按钮扩展了构建详情的“link”部分。在那里,我看到了它正在链接的所有库和框架的列表:

    /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”添加到其他链接库中基本上可以达到相同的效果。如果有任何其他动态库框架需要添加到您的模板中,请按照相同的过程进行操作:将它们添加到目标的构建阶段中,检查构建脚本以查看在链接时实际调用的库的名称,然后将它们添加到TemplateInfo.plist中的OTHER_LDFLAGS列表中。
注意:以这种方式添加库将不会将框架添加到XCode的构建阶段界面中,但仍将正确链接它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接