2015-07-27 6 views

Antwort

0

Podfile Lösung

vorausgesetzt Während ignore_all_warnings ein Satz alles oder nichts ist, können Sie :inhibit_warnings => true auf jedem einzelnen pod in der Podfile.

+1

Ich bin mir dieser Option bewusst, und das ist nicht das, wonach ich suche. Ich möchte dies dynamisch tun, da ich nicht jede Abhängigkeit und Unterabhängigkeit manuell auflisten möchte, um auch diese Warnungen zum Schweigen zu bringen. – hfossli

+1

Außerdem müsste ich über jede Abhängigkeit wissen (die sich ändern kann, wenn ich ein Pod-Update mache). Ich muss ein Podfile schreiben, das alles weiß. – hfossli

+1

Rätsel, in der Tat. Im Idealfall hätten Pods überhaupt keine Warnungen. Haben Sie Beispiele für solche Warnungen? Vielleicht können wir einige dieser Pods pull-fix-push machen, vorausgesetzt, sie sind auf Github? – SwiftArchitect

2

Ich bin heute auf ein ähnliches Problem gestoßen und habe je nach Komplexität der Abhängigkeiten zwei Wege gefunden, dies zu erreichen.

Der erste Weg ist einfach und sollte funktionieren, wenn sich Ihre lokalen Entwicklungs-Pods in Ihrer Haupt-Pod-Datei befinden und nicht in einer anderen Abhängigkeit verschachtelt sind. Grundsätzlich hemmen alle Warnungen wie gewohnt, aber geben Sie falsch auf jedem lokalen pod:

inhibit_all_warnings! 

pod 'LocalPod', :path => '../LocalPod', :inhibit_warnings => false 
pod 'ThirdPartyPod', 

Die zweite Möglichkeit, die umfassender ist und sollte für komplexe verschachtelte Abhängigkeiten arbeiten, ist durch eine weiße Liste Ihrer lokalen Schoten zu schaffen und dann während Post installiert, hemmt die Warnungen jeder Schote, die nicht Teil der weißen Liste ist:

$local_pods = Hash[ 
    'LocalPod0' => true, 
    'LocalPod1' => true, 
    'LocalPod2' => true, 
] 

def inhibit_warnings_for_third_party_pods(target, build_settings) 
    return if $local_pods[target.name] 
    if build_settings["OTHER_SWIFT_FLAGS"].nil? 
    build_settings["OTHER_SWIFT_FLAGS"] = "-suppress-warnings" 
    else 
    build_settings["OTHER_SWIFT_FLAGS"] += " -suppress-warnings" 
    end 
    build_settings["GCC_WARN_INHIBIT_ALL_WARNINGS"] = "YES" 
end 

post_install do |installer| 
    installer.pods_project.targets.each do |target| 
    target.build_configurations.each do |config| 
     inhibit_warnings_for_third_party_pods(target, config.build_settings) 
    end 
    end 
end 

Dies wird nun nur 3rd-Party-Abhängigkeiten hemmt aber die Warnungen auf allen lokalen Schoten halten.

Verwandte Themen