Avec tout changement de code (bien que le fichier ne soit pas au format .pch), le projet complet se recompile à chaque fois.
Avec tout changement de code (bien que le fichier ne soit pas au format .pch), le projet complet se recompile à chaque fois.
Réponses:
Mise à jour 2017/1/2
Ce problème n'a pas été résolu sur Xcode 8.2.1 (pour mon projet)
Comment survivre?
Code IDE: Xcode/Atom
Build: xcrun
Debug: Xcode (Control + Command + R)
Mise à jour 2017/12/17
Ce problème n'a pas été résolu dans Xcode 8.2.
Mise à jour 12/12/2016
Atom vers le code et la ligne de commande pour construire et déboguer est mon choix maintenant. J'espère qu'Apple corrigera bientôt ce bug légitime.
Mise à jour 04/12/2016
Ce problème semble résolu avec Xcode 8.2 (beta 2) .
Mais pour moi, ce n'est pas résolu, je suis confronté à ce problème même lorsque j'utilise Xcode 8.2. Vous pouvez l'essayer (téléchargez Xcode8.2 beta2 ici )
Système de construction • Xcode ne reconstruira pas une cible entière lorsque seuls de petits changements se sont produits. (28892475)
Ancienne réponse: Il s'agit d'un travail autour de:
Onglet "Build Setting" -> "C Language Dialect" -> Changez-le en "Compiler Default".
Le "Dialecte du langage C" a été réglé sur "GNU99" au lieu de "Compiler Default". Auparavant, le standard était GNU99 mais maintenant ce n'est pas le cas. À un moment donné, Xcode n'a pas migré correctement les paramètres du projet de bibliothèque et a donc été défini sur GNU99. Une fois que je l'ai changé en GNU99, il a arrêté de recompiler tout mon code à chaque fois!
Allez dans Product -> Scheme -> Edit Scheme. Sélectionnez Construire dans la colonne de gauche et décochez " Rechercher les dépendances implicites "
Mais cet indicateur doit rester coché lorsque vous créez le projet pour la première fois.
Le correctif pour moi consistait simplement à fermer le storyboard, j'avais ouvert le fichier source avec l'éditeur assisté et le fichier de storyboard ouvert également (en fermant le storyboard --- puisque je n'y apportais aucune modification) supprimait toute la compilation inutile
ACTUALISÉ
La plus grande amélioration que j'ai pu apporter a été la modularisation de mon projet. Modulariser spécifiquement la couche ORM qui est utilisée dans presque toutes les autres classes. En déplaçant ce code dans une cible distincte dans mon projet et en l'important en tant que module, j'ai pu considérablement améliorer les temps de compilation. Xcode ne décide plus de recompiler les fichiers inutiles lorsque je fais une compilation.
J'utilise maintenant la méthode de compilation Single File pour les versions de débogage incrémentielles rapides.
Il y a d'autres bonnes suggestions dans ce lien, y compris la refactorisation du code, https://medium.com/rocket-fuel/optimizing-build-times-in-swift-4-dc493b1cc5f5
VIEUX
Cela a toujours été un problème constant pour moi avec Xcode 9. Comme beaucoup d'entre vous, je travaille sur un grand swift 4 / cocoapods avec de nombreux fichiers sources et chaque fichier à chaque fois est exaspérant.
Jusqu'à présent, j'obtiens les meilleurs résultats avec les paramètres suivants. Je vous suggère de l'essayer et de voir comment cela fonctionne pour vous.
Ajout de paramètres de construction personnalisés définis par l'utilisateur,
Remarque: je n'ai pas le paramètre personnalisé défini par l'utilisateur pour l'optimisation de l'ensemble du module.
J'ai changé quelques choses avec mon code concernant l'en-tête de préfixe qui semblent avoir résolu ce problème. Je ne sais pas lequel a vraiment fait l'affaire, mais je vais tous les partager dans l'espoir que cela aide quelqu'un d'autre. Si vous n'avez pas de jeu d'en-tête de préfixe, alors je suppose que ce n'est pas le problème (ou le problème est multiforme).
@import MyModule
). (Pour moi, ceci et l'étape 1 étaient une seule et même chose.)Si cela ne fonctionne toujours pas, vous pouvez essayer de supprimer d'autres importations de votre en-tête de préfixe. Il y a peut-être quelque chose qui fait trébucher ...
On dirait qu'ils y travaillent activement selon https://forums.developer.apple.com/thread/62737 mais une solution de contournement consiste à ajouter
HEADERMAP_USES_VFS = YES
sous les paramètres de construction de votre cible (Projet -> Cible -> Paramètres de construction -> Défini par l'utilisateur).
Cette solution a fonctionné à chaque fois pour moi aujourd'hui, après qu'aucune autre solution ne fonctionnait de manière cohérente au cours du mois dernier.
EDIT: recompile encore parfois tout, bien qu'il semble le faire beaucoup moins fréquemment avec ce paramètre défini.
Vérifiez tout votre code sur les @IBDesignable
directives dans mon cas particulier de projet de construction Xcode tout le temps car j'avais des vues sur mon storyboard qui contenaient ces @IBDesignable
attributs. La deuxième chose est que mon storyboard est également ouvert dans une fenêtre séparée (pas un onglet) qui pousse mon Xcode à créer des builds pour tous les simulateurs pour toujours.
@IBDesignable
directives ... y a-t-il quelque chose en particulier que nous devrions rechercher?
Madhuri Mane a tout à fait raison à ce sujet. Pour ajouter un peu plus de clarté, quelques points importants à noter:
Ceci est UNIQUEMENT applicable si vous avez des dépendances implicites sur des bibliothèques / frameworks sur lesquels votre cible s'appuie.
Si "Rechercher les dépendances implicites" est désactivé:
Résultat: la bibliothèque ne sera pas créée avant la création de la cible d'application. La cible d'application n'a pas pu être créée.
Correction: pour éviter que le deuxième scénario ne se produise, vous devez ajouter les cibles nécessaires dans la liste des cibles et les ordonner correctement.
Source et lectures complémentaires sur le sujet: https://pewpewthespells.com/blog/managing_xcode.html#scheme-action
Maintenant, si votre projet entier est hébergé dans une seule cible et que la compilation prend 4 minutes, vous ne pouvez pas faire grand chose à ce sujet, sauf le diviser en frameworks pour tirer parti de ce qui précède ou déterminer où la compilation est en retard. Si vous utilisez quelque chose comme PaintCode ou avez de gros morceaux de code UIKit rapidement, changez-le en Objective-c, il se compile beaucoup plus rapidement
Apple a publié hier une nouvelle version bêta de Xcode (14 novembre)
Xcode 8.2 beta 2
Et ce problème a été marqué comme résolu dans la note de publication.
Système de construction
• Xcode ne reconstruira pas une cible entière lorsque seuls de petits changements se sont produits. (28892475)
Ça marche pour moi. La vitesse de construction est revenue comme d'habitude. Tous ceux qui sont confrontés à ce problème devraient essayer!
Accédez au paramètre de construction du projet et modifiez le "Dialecte du langage C".
Le "Dialecte du langage C" est réglé sur "GNU99" au lieu de "Compiler Default" lorsque vous mettez à jour la version xcode. À un moment donné, Xcode n'a pas migré correctement les paramètres du projet de bibliothèque et a donc été défini sur GNU99. Cela résoudra le problème
Si vous avez apporté des modifications au fichier Swift, commencez à construire l'application, allez dans le dernier onglet et cliquez sur le journal de construction, pendant l'étape "Vérifier les dépendances" arrêtez la construction et exécutez-la à nouveau. Lors de la deuxième exécution, il ne devrait générer que les fichiers que vous avez modifiés. Si cela est fait correctement, j'ai trouvé que cela fonctionne à chaque fois. Pas besoin de modifier les paramètres du projet.
Cela semble être un bogue dans Xcode.
Si vous voyez que l'application effectue une compilation complète, arrêtez la compilation et réessayez cette astuce.
Si vous n'avez apporté aucune modification au code, utilisez CMD + CTRL + R pour exécuter sans générer l'application qui attache le débogueur. Ne construira pas d'application mais peut aider à gagner du temps inutile.
Problème de mon côté résolu en appliquant la décocher à la solution "Rechercher les dépendances implicites".
MAIS rappelez-vous si vous utilisez des cocoapodes, pour appliquer également ces paramètres à votre projet de pod en le sélectionnant dans
Produit -> Schéma -> Pods- "yourProjectName"
s'appliquent également dans:
Produit -> Schéma -> "yourProjectName"
Cela m'aide, alors j'espère que cet indice aidera quelqu'un d'autre.
Merci
Essayez de: 1. Accédez au projet 2. Cliquez sur Paramètres de génération 3. Vérifiez que OptimizationLevel est défini sur Aucun pour le débogage. 4. Cliquez sur Ajouter un paramètre défini par l'utilisateur. 5. Définissez SWIFT_WHOLE_MODULE_OPTIMIZATION sur OUI.
pour accélérer la compilation de xcode, peut utiliser IRAMDISK (disque de mémoire virtuelle). Moyen très utile et efficace pour réduire le temps de compilation.
Peut également utiliser pour accélérer les applications fréquemment utilisées.
reportez-vous au lien suivant pour télécharger et utiliser: http://iramdisk.findmysoft.com/mac/