Wie kann ich ändern, OTHER_LDFLAGS über CocoaPods post-install hook?
Mein Projekt verwendet CocoaPods und auch eigene xcconfig
- Dateien. Bis jetzt hat dies nicht verursacht keine Probleme: ich hatte bisher nur zu #include
die CocoaPods-generierte Konfiguration am Ende meiner benutzerdefinierten Konfiguration.
Allerdings habe ich ein problem, wo die Notwendigkeit bedingt angeben OTHER_LDFLAGS
auf der Grundlage der xcconfig
, aber ich kann nicht herausfinden, wie dies zu tun.
Als start, habe ich versucht, einfach die Protokollierung der OTHER_LDFLAGS
so, aber die flags sind eigentlich nicht angemeldet:
post_install do |installer_representation|
installer_representation.project.targets.each do |target|
target.build_configurations.each do |config|
name = target.name
puts "Target Found: #{name}"
flags = config.build_settings['OTHER_LDFLAGS']
puts "OTHER_LDFLAGS Found: #{flags}"
end
end
end
Die Ausgabe sieht wie folgt aus:
Target Found: Pods-ProjectName-DependencyName1
OTHER_LDFLAGS Found: # nothing here...?
Target Found: Pods-ProjectName-DependencyName2
OTHER_LDFLAGS Found: # again nothing...
# etc...
Target Found: Pods-ProjectName # Cool, this is the main target pod
OTHER_LDFLAGS Found: # ...
Wie kann ich eigentlich ändern OTHER_LDFLAGS
über die CocoaPods post-install hook?
- Was wollen Sie genau tun ? Wenn Sie möchten, ändern Sie die OTHER_LDFLAGS, können Sie es in den pod spec direkt
- Nach allem, was ich nicht glaube, diese Frage macht Sinn. Wie @Loegic sagt: die Schoten können sich selbst hinausgewachsen erklären die OTHER_LDFLAGS in Ihrer podspecs. Sie nicht zu verwirren wollen um mit den Hülsen Ziel IMO.
- Ich bin in der unglücklichen situation, wo ich eine Drittanbieter-statischen Rahmen, die nicht über eine CocoaPod und ist zu groß, um gut zu funktionieren, wie ein pod (8 GB... :/). Ich habe geschrieben scripts zu schaffen, aber es erfordert auch Ergänzungen zu den OTHER_LDFLAGS. Sie können nicht außer Kraft gesetzt OTHER_LDFLAGS in der Ziel-build-Einstellungen oder sonst CocoaPods xcconfigs werden ignoriert. Können Sie nicht in benutzerdefinierten xcconfig, oder die eine oder andere config-flags (je nachdem, wie Sie zählen pod xcconfig) überschrieben wird. So, ich dachte, zu verwenden, installieren Sie den Haken.
- Sie gehen davon aus, dass, wenn ein Projekt verwendet CocoaPods, es ist der einzige Weg, Abhängigkeiten enthalten sein wird... leider, dies ist nicht der Fall hier. Im Grunde bin ich ziehen in Abhängigkeiten sowohl mithilfe von CocoaPods und custom-shell-Skripte... ist das eine tolle Idee? NÖ. Leider bin ich verpflichtet, ein third-party-Rahmen, der nicht über eine CocoaPod und ist zu groß (8 GB). Wieder, keine gute Idee. Ich will auch gar nicht versuchen, diese Arbeit mit CocoaPods... manuell ändern OTHER_LDFLAGS in der Ziel-build-Einstellungen ist es einfacher, wenn ich als letzten Ausweg.
- In unserem Projekt haben wir eine vustom xconfig für unsere app Ziel. Es ist möglich,.
- Hast du $(geerbt)?
- Wenn Ihr Rahmen ist außerhalb von cocoapods ich sehe nicht, warum Sie ändern die Hülsen Ziel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stolperte ich über das gleiche problem. Zuerst habe ich versucht zu ändern
OTHER_LDFLAGS
mit dem offensichtlichen an:aber es hat nicht funktioniert. Die relevanten xcconfig gar nicht ändern. Schließlich fand ich ein workaround, das funktioniert gut - Lesen Sie zuerst die relevanten xcconfig Datei-Inhalt in die
post_intall
Haken, ändern Sie es und schreiben Sie es zurück:v1.0
BEARBEITEN: Verbesserung gegenüber der v1.0. Anstelle der Betrieb auf xcconfig
String
Inhalt direkt Lesen xccconfig in eine build_configurationHash
ändern Sie den hash und dann Spülen Sie es xcconfig.v1.5
v1.5
arbeitete awesome. Die einzige änderung, die ich vornehmen musste warfile = File.open(xcconfig_path, "w")
(mit write anstelle von Anhängen). Danke!File.open(xcconfig_path, "w") { |file| build_settings.each do |key,value| if key != 'OTHER_LDFLAGS' file.puts "#{key} = #{value}" end end }
gut Funktioniert !odd number of arguments for Hash
.Basiert auf den Antworten oben und die offizielle rubydocs von cocoapods und xcodeproj, ich kam mit dieser Lösung, die rein auf der Basis der APIs bereitgestellt durch die erwähnten Edelsteine:
Diese erfolgreich, fügt der linker-flag
-l"AFNetworking"
zu jedem xcconfig-Datei von einem beliebigen Aggregat-Ziel ("Pod-...').Getestet mit cocoapods 1.2.0 und 1.3.0 Xcode8.3.3 und Xcode9 Beta 4.
Hier ist ein Fall für v1.0:
Ich stolperte über dieses thread, da haben wir mehrere apps, die alle haben individuelle xcconfigs und gemeinsame xcconfig-Dateien. Mit "pods" begann auseinander zu fallen, sobald wir eine app-Erweiterung als Ziel und konnte nicht mehr teilen der Projekt-Ebene der Vererbung für die aktive config(wie debug). Sooooo mit v1.0 von oben können Sie wieder den Namen der pod-level-Elemente, wie OTHER_LDFLAGS zu PODS_OTHER_LDFLAGS und dann sicher #include Sie in Ihrem xcconfigs (ohne stampfenden andere Werte) mischen Sie Sie mit gemeinsamen -, app -, Ziel-Einstellungen ala:
So, in meinem Hülsen-Datei haben wir einen Abschnitt, wie dies in einer Schleife wie v1.0:
und ein Kleber xcconfig, dass auf den target level ala:
wo die verschiedenen app/config/common/pod-Einstellungen sind eingezogen und Zusammenführen.xcconfig zieht sich alles zusammen, wie diese:
Ich bin mit pod version 1.8.4, und alle der oben hat bei mir nicht funktioniert, deshalb dieses posting hier incase es wird jemand helfen
Den unten Drehbuch basiert auf dem @mrvincenzo Antwort, aber ich hatte zu tun, einige änderungen zu machen, arbeiten diese erfolgreich append
-ObjC
Flagge zuOTHER_LDFLAGS
im Hinterkopf behalten, das halten der vorhandenen Liste und nur fügen Sie die fahne, um esIch konnte nicht herausfinden, eine gute Möglichkeit zum ändern der
xcconfig
. Ich kann Ihnen ansehen und sogar ändern Sie Sie in nach der Installation, aber meine änderungen nicht geschrieben, um die Hülsexcconfig
.Dies ist, was ich verwenden, um ändern Sie die xcconfig Datei:
Den Weg zu ändern, die
OTHER_LD_FLAGS
im post-install-Skript direkt ist wie folgt. Aber da Sie nicht geschrieben, um diexcconfig
Datei, ich musste greifen, um den hacky Lösung vor. Wenn Sie herausfinden können, wie man diese änderungen in die Datei geschrieben, es wäre genial.