Xcode 4でPathTypeを設定するTemplateInfo.plist(SDKを基準にして)

私はsqlite3.dylibを参照する必要があるiOS用のXcode 4プロジェクトテンプレートを作成しました。テンプレートの定義要素にsqlite3.dylibのPathTypeをAbsoluteに設定すると、テンプレートを取得して有効なプロジェクトを作成できます。

PathTypeをSDKとの相対的なものにすることができるようにしたいのですが、SDKに関連したライブラリリファレンスを作成するために正しいPathTypeが何であるかについて誰でも提案できます。

ありがとう。

3

2 答え

これは私に数時間かかった。私も同じ問題に直面し、Appleからのいかなる文書もなく、それを理解することはほとんど不可能でした。私はXCodeバイナリでいくつかのリバースエンジニアリングを行い、 Xcode3UI バイナリで証拠を見つけました。彼らは以下の(内部の)enumを定義しました:

_PBXSourceTree_Absolute
_PBXSourceTree_BuildProduct
_PBXSourceTree_CurrentSDK
_PBXSourceTree_DeveloperDir
_PBXSourceTree_Group
_PBXSourceTree_Project

私はそれをテストしたし、確かにそれは事実でした。以下は、 ALL というPathTypeの有効な値です。

  • Absolute (Equivalent to "Absolute Path")
  • BuildProduct (Equivalent to "Relative to Build Products")
  • CurrentSDK (Equivalent to "Relative to SDK")
  • DeveloperDir (Equivalent to "Relative to Developer Directory")
  • Group (Equivalent to "Relative to Group", but be careful no relative definition is allowed)
  • Project (Equivalent to "Relative to Project")

私はあなたが " CurrentSDK "値に非常に興味があると思います。

Hope this helps & Regards, Kristian

4
追加された

これは私がそれを解決した方法です:

libsqlite3.dylib
            
                    Path
                    /usr/lib/libsqlite3.dylib
                    PathType
                    Absolute
                    FileType
                    wrapper.framework
            

SDKディレクトリからではありませんが、iOS 4.xおよび5.xシミュレータでうまく動作します。

あなたが本当にSDKからそれを望むなら、これをあなたのTemplateInfo.plistに追加してください:

                Targets
            
                    
                            BuildPhases
                            
                                    
                                            Class
                                            Sources
                            
                            
                                    Class
                                    Frameworks
                            
                            
                                    Class
                                    ShellScript
                                    ShellPath
                                    /bin/bash
                                    ShellScript
                                    
                   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を閉じる/開く必要があります。

0
追加された