2011-11-12 17 views
3

我爲需要引用sqlite3.dylib的iOS創建了Xcode 4項目模板。如果我在模板的Definitions元素中將PathType設置爲Absolute for sqlite3.dylib,我可以獲取模板來創建有效的項目。在Xcode 4中設置PathType相對於SDK的TemplateInfo.plist

我希望能夠將PathType定義爲相對於SDK,任何人都可以提供關於相對於SDK使用的庫引用的正確PathType的建議。

謝謝。

回答

3

這一個花了我幾個小時。我也面臨同樣的問題,沒有任何來自蘋果的文檔,幾乎不可能弄清楚。我在XCode二進制文件上做了一些逆向工程,並在Xcode3UI二進制文件中找到了證據。他們定義了以下(內部)枚舉:

_PBXSourceTree_Absolute 
_PBXSourceTree_BuildProduct 
_PBXSourceTree_CurrentSDK 
_PBXSourceTree_DeveloperDir 
_PBXSourceTree_Group 
_PBXSourceTree_Project 

我測試了它,並且確實如此。以下是爲PathType ALL有效值:

  • 絕對(相當於 「絕對路徑」)
  • BuildProduct(相當於 「相對於構建產品」)
  • CurrentSDK(等同於「相對於SDK」)
  • 開發者目錄(相當於「相對於開發者目錄」)
  • 集團(相當於「相對於集團」,但要小心,沒有相對的定義是允許的)
  • 項目(相當於「相對於項目」)

我覺得你很對「CurrentSDK」感興趣。

希望這會有所幫助&問候,克里斯蒂安

0

這是我已經解決它:

<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目錄,但效果很好的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 &#39;/usr/lib/libsqlite3.dylib; sourceTree = &quot;&lt;absolute&gt;&quot;&#39; &quot;$PROJECT_DIR/$PROJECT_NAME.xcodeproj/project.pbxproj&quot; &amp;&amp; 
            sed -i -e &#39;s|/usr/lib/libsqlite3.dylib; sourceTree = &quot;&lt;absolute&gt;&quot;|usr/lib/libsqlite3.dylib; sourceTree = SDKROOT|g&#39; &quot;$PROJECT_DIR/$PROJECT_NAME.xcodeproj/project.pbxproj&quot; 

唯一不方便的:你需要的變化生效之前建立從模板生成的項目。第一次構建完成後,您需要關閉/打開prj。