web-dev-qa-db-fra.com

Comment faire pour supprimer l'avertissement: "-pie étant ignoré. Il n'est utilisé que lors de la liaison d'un exécutable principal"

enter image description here

depuis la mise à jour vers Xcode10 et Swift 4.2 Je reçois toujours ces avertissements de temps de construction dans mon module. que dois-je faire pour supprimer ces avertissements?

J'ai essayé de supprimer des données dérivées, de nettoyer et de construire un projet, mais cela ne fonctionne pas :(

Je trouve que quelqu'un pose la même question ici https://github.com/Alamofire/Alamofire/issues/2624 et il y a une réponse de Jon Shier, mais je ne peux toujours pas résoudre le problème après en supprimant le xcworkspace précédent et en mettant à jour les cocoapods, je n'ai pas implémenté de modifier le paramètre "Générer un exécutable dépendant de la position", car je ne le trouve pas. veuillez partager si vous pouvez trouver la solution de ce problème :)

28
sarah

La définition de "Générer un code dépendant de la position" sur Oui ne semble pas être la bonne solution. Indépendant de la position est préférable. Les cibles non-app comme les frameworks et les bibliothèques seront toujours indépendantes de toute façon, d'où l'avertissement.

L'avertissement affiché est un message de l'éditeur de liens et l'autre paramètre de la capture d'écran de @ Marcpek semble plus approprié: "Liaison> Générer un exécutable dépendant de la position". QuickHelp montre qu'il s'agit du LD_NO_PIE réglage.

Generate Position-Dependent Executable LD_NO_PIE setting

Même si cela hérite de No des valeurs par défaut du système d'exploitation, j'ai essayé de le définir de nouveau sur Non dans mes cibles CocoaPod de manière explicite et cela semblait fonctionner, corrigeant l'avertissement de l'éditeur de liens.

Tous les paramètres de projet que vous définissez seront perdus la prochaine fois que vous exécuterez pod install modifiez donc le Podfile pour rendre le changement permanent. Ajouter config.build_settings['LD_NO_PIE'] = 'NO' en phase post_installation:

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['LD_NO_PIE'] = 'NO'
        end
    end
end
13
Ben

Ce qui a finalement fonctionné pour moi, c'est d'activer le code dépendant de la position pour le projet Pods. J'ai essayé de désactiver les avertissements des pods et d'effacer (au lieu d'activer) le paramètre Générer du code dépendant de la position avant, mais cela n'a pas vraiment fonctionné.

Désactiver la tarte pour les pods

Pour activer le code dépendant de la position (et donc supprimer -pie, qui est [~ # ~] p [~ # ~] osition [~ # ~] i [~ # ~] indépendant [~ # ~] c [~ # ~] ode), après avoir ouvert xcworkspace, accédez aux paramètres de construction du projet Pods (les paramètres de l'ensemble du projet Pods, voir capture d'écran), recherchez position et définissez le Generate Position-Dependent Code build setting to Yes.

Changing pie setting for Pods

2
Marcpek