在Xcode 4项目模板中包含libsqlite3动态库

在Xcode 4项目模板中包含libsqlite3动态库,xcode,xcode4,sqlite,xcode4.2,dylib,Xcode,Xcode4,Sqlite,Xcode4.2,Dylib,我已经为iOS创建了一个Xcode 4项目模板,它依赖于几个框架和libsqlite3.dylib。我已经能够自动添加框架,但似乎不知道如何添加动态库。有人在这件事上运气好吗 编辑: 我想我还不够清楚,我已经创建了自己的.xcodetemplate文件,在创建新项目时显示为项目模板。我需要知道在TemplateInfo.plist文件中放置什么,以便将libsqlite3.dylib文件包含在从模板创建的新项目中。通过在Targets->Item 0->Frameworks键下列出CoreMot

我已经为iOS创建了一个Xcode 4项目模板,它依赖于几个框架和libsqlite3.dylib。我已经能够自动添加框架,但似乎不知道如何添加动态库。有人在这件事上运气好吗

编辑:

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

我找到了通过其他链接器标志项目设置来实现这一点的方法。要链接sqlite3.0.dylib框架,只需在Project->SharedSettings下的TemplateInfo.plist中添加一个节点,键为“OTHER_LDFLAGS”,值为“-lsqlite3.0”

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

对于那些好奇我是如何理解它的人,我使用我的目标的Build Phases选项卡手动将sqlite3.0.dylib框架添加到我的项目中,然后构建项目。然后,我通过单击Xcode中的LogNavigator选项卡查看了构建的细节。然后,我点击了最新的构建以查看其详细信息,并通过点击文本右侧的detaildiscovery按钮扩展了构建详细信息的“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中的其他\u ldflag列表中


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

我打开了一个关于此的DTS事件,回应是,这在XCode的发布版本中目前是不可能的。我会留下这个问题,以防有人知道如何在未来的版本。谢谢,这正是我需要的!