【问题标题】:Including libsqlite3 dylib in Xcode 4 project template在 Xcode 4 项目模板中包含 libsqlite3 dylib
【发布时间】:2011-12-13 17:13:01
【问题描述】:

我为 iOS 创建了一个 Xcode 4 项目模板,它依赖于多个框架和 libsqlite3.dylib。我已经能够自动添加框架,但似乎无法弄清楚如何添加 dylib。有没有人遇到过这种情况?

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

【问题讨论】:

  • 我打开了一个关于此的 DTS 事件,得到的回应是目前 Xcode 的发布版本无法实现这一点。我会留下这个问题,以防有人在未来的版本中弄清楚如何做到这一点。

标签: xcode xcode4 sqlite xcode4.2 dylib


【解决方案1】:

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

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

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

    /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,但仍会正确链接。

【讨论】:

  • 谢谢,这正是我所需要的!
猜你喜欢
  • 2011-07-20
  • 1970-01-01
  • 2015-06-27
  • 2013-12-22
  • 1970-01-01
  • 2016-01-09
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多