Das Ziel… überschreibt die Build-Einstellung "OTHER_LDFLAGS", die in "Pods / Pods.xcconfig" definiert ist

237

Ich habe SpatialIitein ein Xcode-Projekt eingebaut , das eine Header-Datei von Proj.4nur einem Header verwendet. Beide sind Xcode-Projekte und haben statische Ziele.

Ich versuche, vom Git-Submodul zu Cocoapods zu migrieren. Da statische Ziele mit Cocoapods schwierig zu verwenden scheinen, möchte ich das Projekt nur auf die übliche Weise erstellen lassen. Ich habe Podspec für gemacht Proj.4. Nachdem SpatialLiteich podfile für geschrieben hatte, bekam ich die Warnungen:

[!] The target `SpatialiteIOS [Debug]` overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The target `SpatialiteIOS [Debug]` overrides the `HEADER_SEARCH_PATHS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The target `SpatialiteIOS [Debug - Release]` overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The target `SpatialiteIOS [Debug - Release]` overrides the `HEADER_SEARCH_PATHS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

Ich habe dieses Problem gelesen, weiß aber nicht genau, was die Warnungen bedeuten und was ich tun kann, um es zu beheben.

Wenn ich den Arbeitsbereich öffne und das SpatiaLite-Projekt alleine öffne, sind beide Probleme auf Mac OSX 64 ausgerichtet, wenn es sich vermutlich um ein iOS-Projekt handelt. In meinem Podfile steht "platform: ios".

Huggie
quelle
2020 - für alle, die mit diesem nervigen Problem zu kämpfen haben. Es wird wirklich nur von (Überraschung! :)) Facebook verursacht. Wie HIER erklärt, ist firebase.google.com/docs/auth/ios/firebaseui "Wenn Sie es vorziehen, können Sie nur die Auth-Komponente und die Anbieter hinzufügen, die Sie verwenden möchten ...", sobald Sie die Facebook-Option eliminieren, gibt es kein Problem . : /
Fattie

Antworten:

543

Das funktioniert definitiv die meiste Zeit:

Gehen Sie zu Ihren Ziel-Build-Einstellungen -> Andere Linker-Flags -> Doppelklick. $(inherited)Zu einer neuen Zeile hinzufügen .

Wenn Sie ein Problem mit "... Ziel überschreibt die in ... definierte Build-Einstellung GCC_PREPROCESSOR_DEFINITIONS" haben, müssen Sie Ihren Ziel-Build-Einstellungen -> Präprozessor-Makros $ (geerbt) hinzufügen

Ankish Jain
quelle
29
Ich würde diese Antwort erweitern. Wenn Sie ein Problem mit "... Ziel überschreibt die GCC_PREPROCESSOR_DEFINITIONSin ... definierte Build-Einstellung" haben, müssen Sie $ (geerbt) zu Ihren Ziel-Build-Einstellungen hinzufügen -> Präprozessor-Makros
Libor Zapletal
1
Ich vermute, dass "... Ziel die INSERT_YOUR_MISSING_DEFINITION überschreibt ...", dann müssen Sie $ (geerbt) hinzufügen. Seltsamerweise zeigte mein xcode $ (geerbt) ein bisschen schwach wie standardmäßig. Ich habe das gleiche bearbeitet und einfach neu getippt. Fehler verschwunden ..
Joe
3
@ Joe Arbeitet immer noch nicht für mich. Ich habe alle diese Vorschläge ausprobiert, aber wenn ich die Pod-Installation erneut ausführe, bleiben die Fehler bestehen. Ich habe die Änderungen sowohl an anderen Linker-Flags als auch an Präprozessor-Makros vorgenommen. In beiden Fällen wird nichts angezeigt, bis Sie auf jede der Zeilen in anderen Linker-Flags und Präprozessor-Makros doppelklicken. Dann können Sie sehen, dass $ (geerbt) hinzugefügt wurde. Ich habe versucht zu löschen und zu lesen. Ich habe versucht, xcode zu schließen und wieder zu öffnen. Nichts behebt die Fehlermeldungen, wenn ich die Pod-Installation eingebe.
JeffB6688
1
@msmq Es ist schon lange her, aber erinnerst du dich an die Problemumgehung, die du versucht hast und die funktioniert hat? $(inherited)ist schon da in der obersten Zeile, aber es funktioniert nicht für mich: /
Kostas Dimakis
1
Ich habe es hinzugefügt Stil Pod Installation wirft den gleichen Fehler.
Rohitwtbs
75

Es besteht ein Konflikt zwischen Ihren Build-Einstellungen und den von Cocoapods gewünschten Standard-Build-Einstellungen. Um die Build-Einstellungen für Cocoapods anzuzeigen, zeigen Sie die .xcconfig-Datei (en) unter Pods / Target Support Files / Pods - $ {PROJECTNAME} / in Ihrem Projekt an. Für mich enthält diese Datei:

GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/Commando"
OTHER_LDFLAGS = -ObjC -framework Foundation -framework QuartzCore -framework UIKit
PODS_ROOT = ${SRCROOT}/Pods

Wenn Sie mit den Cocoapods-Einstellungen zufrieden sind, gehen Sie zu Build-Einstellungen für Ihr Projekt, suchen Sie die entsprechende Einstellung und drücken Sie die Entf-Taste. Dies verwendet die Einstellung von Cocoapods.

Wenn Sie jedoch eine benutzerdefinierte Einstellung haben, die Sie verwenden müssen, fügen Sie dieser Einstellung $ (geerbt) hinzu.

Phatmann
quelle
Ich hatte auch dieses Problem, ich konnte das -ObjC entfernen und das hat dieses Problem behoben. Beim Versuch, das Projekt zu erstellen, wird jedoch die Fehlermeldung angezeigt, dass die zielspezifische Pod-Bibliothek nicht gefunden werden kann: "ld: Bibliothek für -lPods-MyProject nicht gefunden". Hast du etwas ähnliches gesehen?
Roderic Campbell
3
Ich bin wieder darauf gestoßen. Ich bin nicht sicher, ob $ (geerbt) bedeutet. Wo füge ich es hinzu?
Huggie
@RodericCampbell Ich habe festgestellt, dass das Entfernen von -ObjC aus dem Projekt für mich gut funktioniert und ich sehe Ihren Fehler nicht.
Huggie
1
Hmm, aber ich brauche das -ObjC-Flag zur Laufzeit, da ich Kategorien habe.
Huggie
3
OTHER_LDFLAGS = Andere verknüpfte Flags, HEADER_SEARCH_PATHS = Header-Suchpfade, GCC_PREPROCESSOR_DEFINITIONS = Präprozessor-Makros. @kraftydevil, welche Einstellung versuchst du zu löschen?
Phatmann
30

Ich habe diese 3 Fehler für den Pod-Befehl im Terminal gesehen

pod install

[!] Das MY_APP [Debug / Release] -Ziel überschreibt das HEADER_SEARCH_PATHS ...
[!] Das MY_APP [Debug / Release] -Ziel überschreibt das OTHER_LDFLAGS ...
[!] Das MY_APP [Debug / Release] -Ziel überschreibt das GCC_PREPROCESSOR_DEFINITIONS .. .

Alle diese 3 Fehler würden durch Hinzufügen von $ (geerbt) zu beseitigt

  1. Header-Suchpfade
  2. Andere Linker Flags
  3. Präprozessor-Makros

in Projekt -> Ziel -> Build-Einstellungen

Und jetzt würde der Befehl ohne Fehler ausgeführt

pod install
Zeeawan
quelle
Das obige hat bei mir funktioniert, als Other Linker Flagses nicht ausreichte , nur die Flagge zu wechseln .
JaredH
21

Suchen Target -> Build Settings -> Other Linker Flags, wählen Other Linker Flagsund drücken Sie in Ihrem Projekt delete(Mac-Tastatur) / Backspace(Normale Tastatur), um die Einstellung wiederherzustellen. Für mich geht das.

Beispiel:

Vor Geben Sie hier die Bildbeschreibung ein

Nach dem Geben Sie hier die Bildbeschreibung ein

SamirChen
quelle
1
Entfernen wir die Einstellungen, die sich bereits in Other Linker Flags befinden? oder behalten wir sie und fügen auch $ (geerbt) hinzu?
isJulian00
20

Ich hatte gerade ein ähnliches Problem beim Ausführen pod installund sah die folgenden Warnungen / Fehler (im Zusammenhang mit CLANG_CXX_LIBRARY):

Der Fehler / die Warnung von Cocoapods

[!] The `Project [Debug]` target overrides the `CLANG_CXX_LIBRARY` build setting defined in `Pods/Target Support Files/Pods/Pods.debug.xcconfig'. This can lead to problems with the CocoaPods installation
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The `Project [Release]` target overrides the `CLANG_CXX_LIBRARY` build setting defined in `Pods/Target Support Files/Pods/Pods.release.xcconfig'. This can lead to problems with the CocoaPods installation
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

Die Reparatur

  1. Wählen Sie Ihre aus, Projectdamit Sie die sehen können Build Settings.
  2. Wählen Sie Ihre Target( AppNameunter Targets)
  3. Suchen C++ Standard Library(Es wird wahrscheinlich in Fettdruck angezeigt - dies bedeutet, dass es überschrieben wird).
  4. Wählen Sie die Linie aus (also blau hervorgehoben) und drücken Sie ⌘ + DELETE(Befehl + Rücktaste).

Die Zeile sollte nicht mehr fett gedruckt sein und wenn Sie pod installdie Warnungen / Fehler ausführen , sollten sie verschwunden sein.


Sehhilfe

CLANG_CXX_LIBRARY Fehler / Warnung bei Cocoapods

Anil
quelle
12

Wenn sich Xcode beim Verknüpfen beschwert, z. B. Bibliothek für -lPods nicht gefunden, werden die impliziten Abhängigkeiten nicht erkannt:

Gehen Sie zu Produkt> Schema bearbeiten. Klicken Sie auf Erstellen. Fügen Sie die statische Bibliothek der Pods hinzu. Bereinigen und erneut erstellen

Amit Saxena
quelle
Ich habe versucht, wie Sie vorgeschlagen haben, aber es werden nicht die zuletzt installierten Frameworks nach Pod-Datei angezeigt. Weitere Vorschläge zur Behebung von Linker-Flag-Fehlern. @Amit Saxena
Anilkumar iOS ReactNative
11

Für mich war das Problem bei meinen Zieltests. Ich hatte bereits die $(inherited)Flagge in meinem Haupt-App-Ziel.

Ich habe es zu MyAppTests Other Linker-Flags hinzugefügt. Danach, als ich lief, war pod installdie Warnmeldung weg. Geben Sie hier die Bildbeschreibung ein

Andreas Olsson
quelle
6

Ich habe $ (geerbt) hinzugefügt, aber mein Projekt wurde immer noch nicht kompiliert. Für mich war das Problem "Nur für aktive Architektur erstellen", ich musste es auf JA setzen.

Sanjana
quelle
Wenn das Projekt kompiliert wird, können wir die Warnungen einfach ignorieren?
isJulian00