web-dev-qa-db-fra.com

erreur: impossible de générer le processus (liste d'arguments trop longue) dans Xcode Build

Je reçois cette erreur:

"erreur: impossible de générer le processus (liste d'arguments trop longue)

** ARCHIVE FAILED **

Les commandes de génération suivantes ont échoué: CompileSwiftSources normal arm64 com.Apple.xcode.tools.Swift.compiler (1 échec)

Exitcode = 65 "

J'ai parcouru ce lien: la localisation d'exportation Xcode renvoie l'erreur "Liste d'arguments trop longue"

Cet article fournit une bonne solution temporaire au problème indiquant de réduire la hiérarchie des chemins. Mais cela ne semble pas être une approche appropriée. Quelqu'un peut-il me proposer une approche différente de la solution à ce problème?

Screenshot added

6
Falguni

Il y a quelques jours, j'ai fait face à un défi similaire. Je souhaite fournir des détails et partager mes recherches avec la communauté SO.

Tout d'abord, j'ai trouvé ce fil et j'ai suivi le lien dans la question posée.
Et oui, c'est vrai, la réponse indiquée dans le lien est correcte, mais les solutions à ce problème ne me convenaient pas.

Problème

Dans mon cas, j'ai eu ce problème lorsque j'ai changé la hiérarchie des dossiers dans mon projet pour qu'elle soit plus pratique et adaptée à moi.
L'option @ oOEric ne me convenait pas, car selon les règles, la hiérarchie des groupes dans Xcode devrait coïncider avec la hiérarchie des dossiers dans le système.
Mais j'ai déjà eu environ 1680 Swift fichiers à compiler.

Le problème était que j'avais trop de chemin vers les fichiers compilés et que leur nombre était trop grand.

Recherche

Puis je commence la recherche et trouve Swift jira avec le même bug. Voici quelques liens:

  1. Principal
  2. Problème lié 1
  3. Problème lié 2
  4. Problème lié
  5. Bug sur Open Radar

Mais ici, je n'ai pas trouvé de solutions pour moi.

Surtout, j'étais satisfait de cette réponse des développeurs Swift.

Encore une fois, c'est un problème côté Xcode, pas un problème côté Swift. Commenter ici ne fera pas travailler les ingénieurs Xcode plus rapidement! (Nous ne sommes pas tous les mêmes personnes chez Apple.)

Okey, après cette réponse, j'étais finalement convaincu que s'il s'agissait d'un bug Xcode, alors la solution devait être recherchée dans Xcode.

Solutions

  1. Solution temporaire

Vous devez déplacer votre projet plus haut dans la hiérarchie de votre système.

Je choisis celle-ci, car j'ai un très gros projet et l'utilisation d'autres solutions me demandera plus d'une journée.

Dans mon cas, j'ai mené une expérience et calculé que la longueur du chemin vers le projet ne devrait pas être supérieure à 50 caractères.

Mais c'est une solution temporaire. Si votre projet se développe davantage, vous devrez raccourcir le chemin ou utiliser d'autres solutions.

  1. Cible de Cocoa Touch Framework

Cette solution convient aux fichiers qui n'utilisent pas de dépendances.

Tout d'abord, vous devez ajouter Cocoa Touch Framework comme cible à votre projet principal.

enter image description here

Cette cible doit être ajoutée automatiquement aux binaires intégrés et Framework et bibliothèques liés.

Après cela, vous devez trouver des fichiers sans dépendances et changer l'appartenance cible à votre "TestTarget".

enter image description here

N'oubliez pas les classes, propriétés, méthodes, énumérations et protocoles du framework cacao touch doivent avoir un accès ouvert ou public.

Et n'oubliez pas de nettoyer votre dossier DerivedData.

  1. iOS modulaire

Cette solution a une approche plus intégrée.

Si vous souhaitez utiliser des dépendances dans vos cadres Cocoa Touch, vous devriez consulter ce guide et rendre la refactorisation plus complexe pour votre grand projet!

Lien vers la solution

Je pense que c'est la meilleure solution.

J'espère que cette grande réponse aidera quelqu'un!

7
Vlad Krupenko

J'ai résolu ce problème en réduisant la hiérarchie des groupes dans Xcode.

par exemple. fichiers originaux dans project_name/project_name/About/Model/Text J'ai supprimé les groupes "Model", "Text" et déplacé les fichiers sous project_name/project_name/About /

2
oOEric

Erreur - impossible de générer le processus (liste d'arguments trop longue)

Il y a plusieurs raisons à cette erreur. Certains d'entre eux sont mentionnés ci-dessous:

  • Votre projet peut avoir plusieurs Swift (disons plus de 2000)
  • La plupart des Swift peuvent être profondément imbriqués dans des répertoires

Screenshot for deeply nested folder structure

  • Beaucoup de ces fichiers ont des chemins absolus avec plus de 150 caractères (par exemple./Macintosh HD/Users/jayprakashnd/mySampleProject/Module1…)

Screenshot for absolute path

Xcode Swift complier prend les chemins absolus de tous les fichiers source lors de la compilation, la limite ARG_MX est atteinte et la construction échoue.

Cela a été corrigé dans Xcode 11 dans lequel un indicateur est utilisé pour définir un nombre illimité de fichiers Swift.

Solutions:

  1. Passez à Xcode 11 et ajoutez USE_Swift_RESPONSE_FILE à [~ # ~] oui [~ # ~] in build settings - Section définie par l'utilisateur

  2. Si vous ne parvenez pas à passer à Xcode 11, procédez à une nouvelle extraction de votre projet dans le répertoire des utilisateurs de Macintosh HD with avec le nom du dossier est minimal que possible.

La solution 2 a fonctionné pour moi comme un charme!

1
Jayprakash Dubey

J'ai résolu ce problème en définissant le système de génération sur Legacy build system dans le fichier-> paramètre d'espace de travail -> sélectionner le paramètre d'espace de travail

1
user3257307

J'ai fait un script simple pour résoudre temporairement ce problème. https://github.com/gregoryvit/flatter

Il suffit de déplacer tous les fichiers Swift du projet Xcode vers le groupe racine.

J'ai changé le type de build en hérité et cela a également résolu le problème pour moi, à la fois localement et sur notre constructeur CI. Pour moi, cela a été causé lors de la vérification de Podfile.lock et Manifest.lock. Cela pourrait probablement être ignoré dans notre pipeline car nous installons toujours des pods sur CI.

0
lisek

xcode11

-Construction de construction

-défini par l'utilisateur

-add paramètre: USE_Swift_RESPONSE_FILE

-setValue: OUI

En faisant cela, vous activez xcode pour avoir plus de fichiers que ce qui est autorisé. Mais je ne sais pas si cela résout toujours le problème.

0
Pedro Menezes

Cela m'est arrivé lorsque j'utilise la version bêta de Xcode 11 avec Live Preview. Ensuite, je l'ai résolu en redémarrant Xcode après la disparition de cette erreur.

0
atalayasa

J'ai résolu ce problème, en déplaçant mon dossier de mon projet Xcode vers la racine mac et en changeant mon nom Folder en moins de caractères.

  1. Terminal: cd /

  2. Remplacez le dossier du nom par BX (exemple).

0
A. Trejo