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

时间:2011-12-13 17:13:01

标签: xcode xcode4 sqlite xcode4.2 dylib

我为iOS创建了一个Xcode 4项目模板,它依赖于几个框架和libsqlite3.dylib。我已经能够自动添加框架,但似乎无法弄清楚如何添加dylib。有人有运气吗?

编辑:
我想我不够清楚,我创建了自己的.xcodetemplate文件,当我创建一个新项目时,该文件显示为项目模板。我需要知道在TemplateInfo.plist文件中放置什么以使libsqlite3.dylib文件包含在从模板创建的新项目中。我已成功地通过在Targets-> Item 0-> Frameworks键下列出它们来添加诸如CoreMotion之类的.framework文件,但这对dylibs不起作用。

1 个答案:

答案 0 :(得分:11)

我通过Other Linker Flags项目设置找到了一种方法。要链接sqlite3.0.dylib框架,只需在Project-> SharedSettings下的TemplateInfo.plist中添加一个节点,其密钥为“OTHER_LDFLAGS”,值为“-lsqlite3.0”。

请注意,这将覆盖项目模板的所有“其他链接器标志”,许多人将其用于标记,例如-ObjC;所以,如果你想保留那些标志,只需要列出你想要的所有标志,并在它们之间留一个空格。 IE:如果您希望项目模板包含ObjC链接器标志和sqlite,只需将节点的值设置为“-ObjC -lsqlite3.0”。

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

    /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框架,只需遵循相同的过程:将它们添加到目标的构建阶段,检查构建脚本以查看链接时实际调用的库,然后将它们添加到您的TemplateInfo.plist中的OTHER_LDFLAGS列表。

注意:以这种方式添加库不会将框架添加到XCode中的构建阶段UI,但它仍然会正确链接它。