我已经为iOS创建了一个需要引用sqlite3.dylib的Xcode4项目模板。如果我在模板的Definitions元素中将sqlite3.dylib的PathType设置为Absolute,我就可以让模板创建一个有效的项目。
我希望能够将PathType定义为相对于软件开发工具包,有谁可以提供建议,什么是正确的PathType是使库参考相对于软件开发工具包。
谢谢。
发布于 2012-10-18 20:25:49
这个花了我几个小时。我也面临着同样的问题,如果没有来自苹果的任何文档,几乎不可能弄清楚。我对XCode二进制文件进行了一些逆向工程,在Xcode3UI二进制文件中发现了一个证据。他们定义了以下(内部)枚举:
_PBXSourceTree_Absolute
_PBXSourceTree_BuildProduct
_PBXSourceTree_CurrentSDK
_PBXSourceTree_DeveloperDir
_PBXSourceTree_Group
_PBXSourceTree_Project我测试了一下,肯定是这样的。以下是PathType的所有有效值:
我想您对"CurrentSDK“的价值非常感兴趣。
希望这能有所帮助&致敬,克里斯蒂安
发布于 2012-02-23 04:27:09
我是这样解决这个问题的:
<key>libsqlite3.dylib</key>
<dict>
<key>Path</key>
<string>/usr/lib/libsqlite3.dylib</string>
<key>PathType</key>
<string>Absolute</string>
<key>FileType</key>
<string>wrapper.framework</string>
</dict>它不是来自SDK dir,但在iOS 4.x和5.x模拟器上工作良好。
好的,如果你真的想从SDK中得到它,把这个添加到你的TemplateInfo.plist中:
<key>Targets</key>
<array>
<dict>
<key>BuildPhases</key>
<array>
<dict>
<key>Class</key>
<string>Sources</string>
</dict>
<dict>
<key>Class</key>
<string>Frameworks</string>
</dict>
<dict>
<key>Class</key>
<string>ShellScript</string>
<key>ShellPath</key>
<string>/bin/bash</string>
<key>ShellScript</key>
<string>
grep '/usr/lib/libsqlite3.dylib; sourceTree = "<absolute>"' "$PROJECT_DIR/$PROJECT_NAME.xcodeproj/project.pbxproj" &&
sed -i -e 's|/usr/lib/libsqlite3.dylib; sourceTree = "<absolute>"|usr/lib/libsqlite3.dylib; sourceTree = SDKROOT|g' "$PROJECT_DIR/$PROJECT_NAME.xcodeproj/project.pbxproj"唯一的不便之处是:在更改生效之前,您需要构建一个从模板生成的项目。在第一次构建完成后,您需要关闭/打开prj。
https://stackoverflow.com/questions/8108390
复制相似问题