web-dev-qa-db-fra.com

Cycle de dépendance du framework Xcode 10 avec lui-même

Sur Xcode 10, je reçois cette erreur de construction avec l'un de mes frameworks lorsque je crée de manière incrémentielle (les constructions nettes fonctionnent):

Showing All Messages
:-1: Cycle inside LoggingSharedFramework; building could produce unreliable results.
Cycle details:
→ Target 'LoggingSharedFramework' has a command with output 'blablabla/Build/Products/Debug-iphonesimulator/LoggingSharedFramework.framework/LoggingSharedFramework'
○ Target 'LoggingSharedFramework' has link command with output 'blablabla/Build/Intermediates.noindex/blablablah/Debug-iphonesimulator/LoggingSharedFramework.build/Objects-normal/x86_64/LoggingSharedFramework'
  • Le framework n'a pas de dépendances cibles
  • La phase des en-têtes est avant les sources de compilation
  • J'ai parcouru tous les fichiers et je me suis assuré qu'il n'y avait aucune importation en train de récupérer des fichiers en dehors de LoggingSharedFramework
  • Je n'utilise aucun système de gestion des dépendances (par exemple, carthage) car il n'y a pas de dépendances externes. Ce cadre est maintenu dans le projet

Cette erreur n'a aucun sens pour moi. Quelle est la cause réelle? Comment puis-je savoir ce qui introduit le cycle? Comment puis-je réparer le cycle?

5
Max

J'ai "réparé" ceci par

  1. La correction de tous les avertissements "En-tête de parapluie pour le module 'foobar' n'inclut pas d'en-tête ..." pour chaque cible en modifiant la visibilité de l'en-tête de Public à Projet selon les besoins
  2. Déplacement de toutes les phases de construction des en-têtes avant la compilation des sources pour chaque cible
  3. Suppression de DerivedData et redémarrage de Xcode

Le premier point a corrigé la dépendance cyclique au sein de LoggingSharedFramework, mais ensuite d'autres frameworks ont développé le même problème. Faire 1 seul n'est pas suffisant, il faut aussi faire 2 pour que le cycle disparaisse. Et même dans ce cas, Xcode peut bloquer le cycle dans un cache quelque part, alors je devais le forcer à faire un build totalement propre avec 3.

Cela semble faire disparaître l'erreur parfois . Continuez à essayer de nettoyer votre build et redémarrez Xcode jusqu'à ce que tout fonctionne, je suppose.

3
Max

Les étapes que je prendrais dans cette situation seraient les suivantes:

Si la variable LoggingSharedFramework est maintenue dans un projet plus important:

  1. Isolez-le pour séparer le projet
  2. Supprimer tous les fichiers LoggingSharedFramework et les importations du projet contenant
  3. Construisez le framework fat et ajoutez-le au projet en tant que framework intégré
  4. Vérifier si l'erreur persiste toujours

Si LoggingSharedFramework est déjà un projet séparé:

  1. Vérifiez chaque fichier et supprimez toutes les importations inutiles (y compris les fichiers Cocoa)
  2. Vérifiez la phase linking et les scripts de construction associés et supprimez tous les éléments inutiles

Il vaut toujours la peine d'essayer Activer/Désactiver les constructions parallèles

Je pense que vous avez déjà tout traversé, mais bonne chance!

0
fewlinesofcode