Xcodebuild avec un espace de travail et la définition d'une custom build path
Je suis en train d'utiliser xcodebuild
de construire un multi-projet de projet dans un espace de travail. Lorsque XCode construit un espace de travail il place automatiquement tous les de construire des artefacts dans un répertoire commun de DerivedData de sorte que chaque projet peut accéder dépendances.
Si j'utilise cette commande:
xcodebuild -workspace myWorkspace.xcworkspace -schema builtIt -configuration Release
Tout fonctionne, mais les objets sont placés dans l'habitude de données tirées du répertoire. Je tiens alors à apparaître dans un répertoire spécifique qui je peux accéder à partir de CI construit. J'ai donc essayé cette
xcodebuild -workspace myWorkspace.xcworkspace -schema builtIt -configuration Release SYMROOT=build/products OBJROOT=build/intermediates
Cependant xcodebuild échoue avec ce dicton
Details: Failed to load dependencies output contents from ``/Users/d4rkf1br3/projects/dNodi/build/intermediates/dNodi.build/Debug-iphoneos/dNodi.build/StaticAnalyzer/normal/armv7/DNRootSelector.d''.
Error: Error Domain=NSCocoaErrorDomain Code=260 "The file “DNRootSelector.d” couldn’t be opened because there is no such file."
UserInfo=0x4012fea40 {NSFilePath=/Users/d4rkf1br3/projects/dNodi/build/intermediates/dNodi.build/Debug-iphoneos/dNodi.build/StaticAnalyzer/normal/armv7/DNRootSelector.d, NSUnderlyingError=0x4012fc240 "The operation couldn’t be completed. No such file or directory"}.
User info: {
NSFilePath = "/Users/d4rkf1br3/projects/dNodi/build/intermediates/dNodi.build/Debug-iphoneos/dNodi.build/StaticAnalyzer/normal/armv7/DNRootSelector.d";
NSUnderlyingError = "Error Domain=NSPOSIXErrorDomain Code=2 \"The operation couldn\U2019t be completed. No such file or directory\"";
}
Le problème semble être que xcodebuild n'est plus à l'aide d'un répertoire central pour tous les projets dans l'espace de travail est de stocker les objets dans chaque projet à la place. Par conséquent, il ne peut pas localiser les dépendances entre le code compilé et des artefacts produits dans d'autres projets.
Personne ne sait le bon paramètre sur la ligne de commande?
Xcode du Paramètre de construction de Référence n'a pas été mis à jour depuis deux ans donc je ne sais pas si il y a de nouveaux paramètres de construction que je peux appliquer.
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr si c'est une nouvelle option, mais la version 5.0 de
xcodebuild
a une option-derivedDataPath
qui vous permet de spécifier le répertoire que vous souhaitez tous les produits de construction de siéger dans.Par exemple, en passant
-derivedDataPath build
crée le dossierbuild
par rapport à l'endroit où vous avez exécutéxcodebuild
, et que vous pouvez trouver votre application de manière prévisible dans un sous-dossier commebuild/Build/Products/Release-iphoneos
.Documentation: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/xcodebuild.1.html
La meilleure solution que j'ai trouvé pour l'instant est d'utiliser le
CONFIGURATION_BUILD_DIR
paramètre avec un chemin ABSOLU (par exemple /tmp/$PROJET/construire). Comme ceci:- Je utiliser Jenkins et là, j'ai une variable nommée
$WORKSPACE
. Avec$WORKSPACE/build
que monCONFIGURATION_BUILD_DIR
j'ai une solution, je suis heureux avec.Les chemins relatifs ne semblent pas fonctionner comme prévu. On doit remplir un rapport de bogue.
J'ai également rencontré ce problème lorsque je construis mon projet de Jenkins CI de l'outil. Mon principal projet dépend d'un sous-projet. J'ai essayé avec la construction de suivez @Chilloutman la solution à ceci:
ou
Deux d'entre eux se produisent des erreurs
Could not find iphoneos in /Users/mobileserver/jenkins_home/jobs/TravelGuide-Buid-For-Me/workspace/build
Mais je réussir enfin à l'aide de ceci:
Qui est: le Réglage de la SYMROOT avec des chemins absolus.