3 votes

Définition de PathType dans Xcode 4 TemplateInfo.plist relatif au SDK

J'ai créé un modèle de projet Xcode 4 pour iOS qui doit faire référence à sqlite3.dylib. Je peux faire en sorte que le modèle crée un projet valide si je règle le PathType sur Absolute pour sqlite3.dylib dans l'élément Definitions du modèle.

J'aimerais pouvoir définir le PathType pour qu'il soit relatif au SDK. Quelqu'un peut-il me suggérer quel est le PathType correct pour que la référence de la bibliothèque soit relative au SDK ?

Merci.

4voto

Kristian Kraljic Points 226

Celui-ci m'a pris quelques heures. J'ai également rencontré le même problème et sans aucune documentation de la part d'Apple, c'était presque impossible à comprendre. J'ai fait un peu de rétro-ingénierie sur les binaires XCode et j'ai trouvé une preuve dans le fichier Xcode3UI binaire. Ils ont défini l'énumération (interne) suivante :

_PBXSourceTree_Absolute
_PBXSourceTree_BuildProduct
_PBXSourceTree_CurrentSDK
_PBXSourceTree_DeveloperDir
_PBXSourceTree_Group
_PBXSourceTree_Project

Je l'ai testé et c'était bien le cas. Voici les éléments suivants TOUTES valeurs valides pour PathType :

  • Absolument (Equivalent à "Absolute Path")
  • BuildProduct (Equivalent à "Relative to Build Products")
  • CurrentSDK (Equivalent à "Relative to SDK")
  • DéveloppeurDir (Equivalent à "Relative to Developer Directory")
  • Groupe (Equivalent à "Relative au groupe", mais attention aucune définition relative n'est autorisée)
  • Projet (Equivalent à "Relative au projet")

Je pense que vous êtes très intéressé par le " CurrentSDK valeur ".

J'espère que cela vous aidera et salutations, Kristian

0voto

Oleg Gryb Points 1525

Voici comment j'ai résolu le problème :

<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>

Il ne provient pas du SDK dir, mais fonctionne bien pour les simulateurs iOS 4.x et 5.x.

Bien, et si vous le voulez vraiment à partir du SDK, ajoutez ceci à votre 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;

Seul inconvénient : vous devez construire un projet généré à partir du modèle avant que la modification ne prenne effet. Une fois la première construction effectuée, vous devrez fermer/ouvrir le prj.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X