Ich habe SpatialIite
in ein Xcode-Projekt eingebunden, das eine Header-Datei aus Proj.4
Verwendet, nur einen Header. Beide sind Xcode-Projekte und haben statische Ziele.
Ich versuche, von Git-Modul zu Cocoapods zu migrieren. Da die Verwendung von statischen Zielen mit Cocoapods schwierig zu sein scheint, möchte ich das Projekt nur wie gewohnt erstellen lassen. Ich habe Podspec für Proj.4
Gemacht. Nachdem ich podfile für SpatialLite
geschrieben habe, habe ich die Warnungen erhalten:
[!] 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 lese dieses Problem aber ich bin ziemlich ratlos, was die Warnungen bedeuten und was ich tun kann, um es zu beheben.
Wenn ich den Arbeitsbereich öffne und nur das SpatiaLite-Projekt öffne, sind beide auf Mac OSX 64 ausgerichtet, wenn angenommen wird, dass es sich um ein iOS-Projekt handelt. Mein Podfile sagt "platform: ios".
Das funktioniert definitiv die meiste Zeit:
Gehen Sie zu Ihren Ziel-Build-Einstellungen -> Andere Linker-Flags -> Doppelklick. Füge $(inherited)
zu einer neuen Zeile hinzu.
Wenn Sie ein Problem mit "... target überschreibt die in ... definierte Build-Einstellung GCC_PREPROCESSOR_DEFINITIONS" haben, müssen Sie $ (geerbt) zu Ihren Target-Build-Einstellungen -> Präprozessor-Makros hinzufügen
Es besteht ein Konflikt zwischen Ihren Build-Einstellungen und den von Cocoapods gewünschten Standard-Build-Einstellungen. Zeigen Sie die .xcconfig-Datei (en) in Pods/Target Support Files/Pods - $ {PROJECTNAME}/in Ihrem Projekt an, um die Cocoapods-Build-Einstellungen anzuzeigen. 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, rufen Sie Build Settings für Ihr Projekt auf, suchen Sie die entsprechende Einstellung und drücken Sie die Entf-Taste. Dies wird die Einstellung von Cocoapods verwenden.
Wenn Sie dagegen eine benutzerdefinierte Einstellung verwenden müssen, fügen Sie dieser Einstellung $ (geerbt) hinzu.
Ich habe diese 3 Fehler für den Pod-Befehl im Terminal gesehen
pod install
[!] Das MY_APP-Ziel [Debug/Release] überschreibt die HEADER_SEARCH_PATHS ...
[!] Das MY_APP-Ziel [Debug/Release] überschreibt die OTHER_LDFLAGS ...
[!] Das MY_APP-Ziel [Debug/Release] überschreibt die GCC_PREPROCESSOR_DEFINITIONS ...
Alle diese 3 Fehler würden durch Hinzufügen von $ (geerbt) zu verschwinden
in Projekt -> Ziel -> Build-Einstellungen
Und jetzt würde der Befehl ohne Fehler ausgeführt
pod install
Finden Sie in Ihrem Projekt Target -> Build Settings -> Other Linker Flags
, wählen Other Linker Flags
, drücken Sie delete
(Mac-Tastatur)/Backspace
(normale Tastatur), um die Einstellung wiederherzustellen. Für mich geht das.
Beispiel:
Vor
Nach
Hatte gerade ein ähnliches Problem, als ich pod install
Ausführte, ich sah die folgenden Warnungen/Fehler (im Zusammenhang mit CLANG_CXX_LIBRARY
):
[!] 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.
Project
, damit Sie den Build Settings
Sehen können.Target
(AppName
unter Targets
)C++ Standard Library
(Es wird wahrscheinlich in FETT - Dies bedeutet, es ist überschrieben).Die Zeile sollte nicht mehr fett gedruckt sein und wenn Sie pod install
Ausführen, sollten die Warnungen/Fehler verschwunden sein.
Wenn sich Xcode beim Verknüpfen beschwert, z. Bibliothek nicht für -lPods gefunden, erkennt die impliziten Abhängigkeiten nicht:
Gehen Sie zu Produkt> Schema bearbeiten. Klicken Sie auf Erstellen. Statische Pod-Bibliothek hinzufügen. Bereinigen und erneut erstellen
Die erste Zeile des Links unten hat meinen Tag gerettet:
Wenn Sie Optionen aus den Build-Einstellungen Ihres Projekts Werte hinzufügen möchten, müssen Sie der Werteliste $ (geerbt) voranstellen.
https://github.com/CocoaPods/CocoaPods/wiki/Creating-a-project-that-uses-CocoaPods#faq
Vergessen Sie auch nicht, diese Zeile am Anfang Ihrer Pod-Datei einzufügen:
platform :iOS, '5.0'
Ich habe $ (geerbt) hinzugefügt, aber mein Projekt wurde immer noch nicht kompiliert. Für mich war das Problem das Flag "Build for active Architecture only", ich musste es auf YES setzen.