it-swarm.com.de

So entfernen Sie Warnung: "-pie wird ignoriert. Wird nur beim Verknüpfen einer ausführbaren Hauptdatei verwendet."

enter image description here

seit dem Update auf Xcode10 und Swift 4.2 Ich bekomme immer diese Build-Time-Warnungen in meinem Pod. Was muss ich tun, um diese Warnungen zu entfernen?

Ich habe versucht, abgeleitete Daten zu löschen, das Projekt zu bereinigen und zu erstellen, aber es funktioniert nicht :(

Ich finde jemanden, der die gleiche Frage hier stellt https://github.com/Alamofire/Alamofire/issues/2624 und es gibt eine Antwort von Jon Shier, aber ich kann das Problem immer noch nicht lösen Ich habe nicht implementiert, um die Einstellung "Positionsabhängige ausführbare Datei generieren" zu ändern, da ich sie nicht finde, wenn ich vorherige xcworkspace-Dateien entferne und cocoapods aktualisiere. Bitte teilen Sie, wenn Sie die Lösung für dieses Problem finden können :)

28
sarah

Das Setzen von "Positionsabhängigen Code generieren" auf "Ja" scheint nicht die richtige Lösung zu sein. Positionsunabhängig ist bevorzugt. Nicht-App-Ziele wie Frameworks und Bibliotheken sind ohnehin immer positionsunabhängig, daher die Warnung.

Die angezeigte Warnung ist eine Linkmeldung, und die andere Einstellung in @ Marcpeks Screenshot scheint geeigneter zu sein: "Verknüpfung> Positionsabhängige ausführbare Datei erstellen". QuickHelp zeigt an, dass dies die Einstellung LD_NO_PIE Ist.

Generate Position-Dependent Executable LD_NO_PIE setting

Auch wenn dies No ohnehin von den Standardeinstellungen des Betriebssystems erbt, habe ich versucht, es in meinen CocoaPod-Zielen explizit wieder auf Nein zu setzen, und das schien zu funktionieren, wodurch die Linker-Warnung behoben wurde.

Alle von Ihnen vorgenommenen Projekteinstellungen gehen beim nächsten Ausführen von pod install Verloren. Bearbeiten Sie daher das Podfile, um die Änderung dauerhaft zu speichern. Fügen Sie config.build_settings['LD_NO_PIE'] = 'NO' In die post_install-Phase ein:

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

Was letztendlich für mich funktioniert hat, ist die Aktivierung des positionsabhängigen Codes für das Pods-Projekt. Ich habe versucht, Warnungen von Pods zu deaktivieren und die Einstellung Positionsabhängigen Code generieren zu deaktivieren (anstatt sie zu aktivieren), aber das hat nicht wirklich funktioniert.

Deaktiviere -pie für Pods

So aktivieren Sie den positionsabhängigen Code (und entfernen daher -pie, das heißt [~ # ~] p [~ # ~] osition [~ # ~] i [~ # ~] ndependent [~ # ~] c [~ # ~] ode), gehe nach dem Öffnen des xcworkspace zu den Build-Einstellungen des Pods-Projekts (die Einstellungen für das gesamte Pods -Projekt, siehe Screenshot), suche nach position und setze das Generiere positionsabhängige Code Build Einstellung auf Ja.

Changing pie setting for Pods

2
Marcpek