Xcode 4 - construire le répertoire de sortie

217

J'ai des problèmes pour configurer / localiser mes fichiers de sortie dans Xcode4 (beta 5). Ils sont placés quelque part ~/Library/Developer/ugly_path/.... Je ne peux même pas sélectionner "Afficher dans le Finder" sur mes produits. Il en va de même pour un projet C simple, un outil Foundation et même un bundle Cocoa. Un débogage fonctionne bien.

Pourriez-vous s'il vous plaît me montrer où et comment configurer / créer des répertoires de sortie? (Je sais que cela semble stupide, je code en Xcode3 depuis des mois, mais je ne peux pas le comprendre en Xcode4 beta).

Merci beaucoup.

kubbing
la source

Réponses:

342

Dans le menu Xcode en haut, cliquez sur préférences, sélectionnez l'onglet emplacements, regardez l'option de construction de l'emplacement.

Vous avez 2 options:

  1. Placer les produits de build dans l'emplacement des données dérivées (recommandé)
  2. Placer les produits de construction aux emplacements spécifiés par les cibles

Mise à jour: Sur xcode 4.6.2, vous devez cliquer sur le bouton avancé à droite sous le champ de texte des données dérivées. Construire l'emplacement sélectionné hérité.

le révérend
la source
27
Cette réponse explique pourquoi ce changement a été effectué: stackoverflow.com/questions/5331270/…
toofah
3
Fier membre, que voulez-vous dire que ces éléments ne sont pas dans Xcode 5? Ils se trouvent dans Préférences -> Emplacements -> Données dérivées -> Avancé.
Richard Venable
Ok, donc ma build va dans le .../XCode/DerivedData/dossier, assez simple. Sauf que les sous-dossiers semblent l'être AppName-asdflkjqwergoobledygook. Étant donné que je construis à partir d'un script, j'aimerais réellement trouver la build (afin que je puisse l'empaqueter et l'envoyer via TestFlight :) Comment puis-je déterminer lequel des nombreux MyAppName-xxxx-s est le bon? Merci!
Olie
@Olie Vous pouvez également changer l'emplacement des données dérivées en un chemin de votre choix
Gerard
@Gerard: Je pourrais, mais ce n'est pas ce que je veux faire. Je vérifie les sources d'un dépôt, puis je construis via la ligne de commande, et je veux savoir où est passée la construction. Il serait inapproprié que mon script de construction modifie le projet de quelque manière que ce soit (par exemple, en changeant les paramètres du projet.)
Olie
140

Si vous créez à partir de la ligne de commande, vous pouvez définir le répertoire de sortie de la manière suivante:

xcodebuild -workspace 'WORKSPACE_NAME.xcworkspace' \
           -scheme 'SCHEME_NAME' \
           -configuration 'Release' \
           -sdk iphoneos7.0 CONFIGURATION_BUILD_DIR='OUTPUT_DIRECTORY'
Igor
la source
Pour que mes scripts sh fonctionnent, je devais supprimer les guillemets simples et écrire juste CONFIGURATION_BUILD_DIR = / Users / ...
Stanislav Pankevich
@occulus, vous avez tout à fait raison, car cela ne permettra pas de construire la cible de test après la construction du projet, je pense que si vous le construisez, ça pourrait être bien, mais il vaut mieux utiliser des chemins absolus!
Mostafa Berg
Dans le cas où quelqu'un d'autre essaie de résoudre un problème similaire, j'ai convaincu XCode 6.x de placer le binaire lié exactement là où il était nécessaire en utilisant cette combinaison:/Users/moi/src/mozbuilds/xul3604/$(CONFIGURATION)/dist/bin
J Evans
29

Dans Xcode 5: Xcode Menu> Préférences ... item> Emplacements onglet> Emplacements sous-onglet> Avancé ... bouton> personnalisée option.

Choisissez ensuite, par exemple, Relative to Workspace .

Grumdrig
la source
8
Puissiez-vous vivre jusqu'à cent ans, fort et sain monsieur. Je vous remercie !
WhozCraig
13

Si le paramètre Xcode 4 Build Location est défini sur "Placer les produits de génération à l'emplacement des données dérivées (recommandé), il doit être situé dans ~ / Library / Developer / Xcode / DerivedData. Ce répertoire contient votre projet sous la forme d'un répertoire, le le nom du projet sera ajouté avec un tas de lettres générées, alors regardez attentivement.

bxiong
la source
10

Conservez les données dérivées mais utilisez DSTROOT pour spécifier la destination.

Utilisez DEPLOYMENT_LOCATION pour forcer le déploiement.

Utilisez également le DWARF_DSYM_FOLDER_PATH non documenté pour copier le dSYM.

Cela vous permet d'utiliser l'emplacement des données dérivées de xcodebuild et de ne pas avoir à faire de trucs farfelus pour trouver l'application.

xcodebuild -sdk "iphoneos" -workspace Foo.xcworkspace -scheme Foo -configuration "Debug" DEPLOYMENT_LOCATION=YES DSTROOT=tmp DWARF_DSYM_FOLDER_PATH=tmp build
Gabriel
la source
8

Vous pouvez toujours trouver le répertoire de construction en regardant dans la visionneuse du journal de construction et en copiant le chemin dans une fenêtre de terminal.

Je l'utilise pour analyser mes bundles iOS .app avant leur installation afin de m'assurer qu'aucun fichier errant n'est inclus.

radven
la source
Convient donc à Apple. Ne pas!
zaph
1
Et où puis-je trouver ce journal de construction ?? La recherche de "build log" dans l'aide de Xcode renvoie 0 résultats.
devios1
1
Nm, a trouvé le "Log Navigator", qui ressemble à une bulle de dialogue.
devios1
4

Pour quiconque souhaite trouver le répertoire de génération à partir d'un script mais ne souhaite pas le modifier, exécutez ce qui suit pour obtenir une liste de tous les paramètres de génération qui pointent vers un dossier dans DerivedData:

xcodebuild -showBuildSettings | grep DerivedData

Si vous exécutez des cibles et des schémas personnalisés, veuillez également les mettre ici:

xcodebuild -workspace "Foo.xcworkspace" -scheme "Bar" -sdk iphonesimulator -configuration Debug -showBuildSettings | grep DerivedData

Regardez la sortie pour localiser la sortie de paramètre souhaitée, puis:

xcodebuild -showBuildSettings | grep SYMROOT | cut -d "=" -f 2 - | sed 's/^ *//'

La dernière partie coupe la chaîne au signe égal, puis coupe l'espace au début.

Berend Klein Haneveld
la source
2

Si vous utilisez les nouveaux espaces de travail Xcode4, vous pouvez modifier l' emplacement des données dérivées sous Fichier -> Paramètres de l'espace de travail ...

DaGaMs
la source
1

Vous pouvez configurer le répertoire de sortie à l'aide de la CONFIGURATION_BUILD_DIRvariable d'environnement.

Source: http://developer.apple.com/library/mac/#documentation/DeveloperTools/Reference/XcodeBuildSettingRef/0-Introduction/introduction.html#//apple_ref/doc/uid/TP40003931-CH1-SW1

Frontières de la santé
la source
non, cela n'est pas lié au comportement de localisation dérivée / héritée (par cible)
Gregory Pakosz
Oui, ça l'est. Cela fonctionne de toute façon. Dans la documentation: "Chemin d'accès au répertoire. Identifie le répertoire dans lequel tous les fichiers liés à la génération pour la configuration de génération active sont placés."
Heath Borders
Nan. pas avec xcode4 cela dépend du Xcode > Preferences > Locations > Derived dataréglage comme expliqué dans la réponse la plus votée. + le document dont vous parlez a été mis à jour pour la dernière fois en 2010
Gregory Pakosz
J'ai en fait utilisé ce paramètre pour configurer le répertoire de construction avec xcode4 à partir de xcodebuild. Essaie.
Heath Borders
1
eh bien j'ai essayé avec Xcode 4.3.1 (de l'IDE) et sans changer le paramètre global, les produits sont construits quelque part dans ~/Library/Developer/Xcode/DerivedData/et non à l'intérieur du répertoire avec lequel je spécifie CONFIGURATION_BUILD_DIR. Si je veux CONFIGURATION_BUILD_DIRêtre honoré, je dois basculer les préférences de données dérivées de Xcode sur "Legacy"
Gregory Pakosz
0

Une autre chose à vérifier avant de commencer à jouer avec les préférences Xcode est:

Sélectionnez votre cible et accédez à Paramètres de construction> Emballage> Extension Wrapper

La valeur devrait être: app

Sinon, double-cliquez dessus et tapez "app" sans les qoutes.

hasan
la source
-1

C'était tellement ennuyeux. Ouvrez votre projet, cliquez sur Target, onglet Open Build Phases. Vérifiez les ressources de votre ensemble de copies pour tout élément rouge.

marbre bleu
la source