web-dev-qa-db-fra.com

Projet «Pods» - Activer l'optimisation de module entier

Dans Xcode 9, je reçois la suggestion suivante pour un projet de cabosses de cacao: suggestion

Qu'est ce que ça fait? Et, dois-je l'allumer, ou ça va casser les choses?

23
Jonathan Solorzano

L'utilisation de Whole Module Optimization permet au compilateur de regarder tous les fichiers source d'un module. Cela rend la compilation plus lente mais lui permet d'optimiser les fonctions génériques même lorsqu'elles se trouvent dans des fichiers source séparés. Vous pouvez le voir dans le test final où le temps d'exécution est maintenant le même pour les définitions de fonction locale et externe.

En résumé, si le temps de compilation supplémentaire ne vous dérange pas, essayez d'activer l'optimisation du module entier pour vos versions.

Cette source devrait vous donner plus d'informations sur l'optimisation de l'ensemble du module

Toutes les modifications apportées au projet Pods par Xcode seront supprimées la prochaine fois que vous exécuterez pod install donc la mise à jour devra avoir lieu dans Cocoapods pour se débarrasser de cet avertissement. Il y a une discussion à ce sujet ici .

La solution à court terme consiste à ajouter un post_install script comme Mike a suggéré .

11
Lawliet

Vous pouvez l'activer automatiquement à chaque fois que vous exécutez pods install en ajoutant ce qui suit post_install script à la fin de votre Podfile.

post_install do |installer| 
  installer.pods_project.build_configurations.each do |config|
    if config.name == 'Release'
      config.build_settings['Swift_COMPILATION_MODE'] = 'wholemodule'
    end    
  end
end

Dans les anciennes versions de Xcode, vous aurez besoin de:

post_install do |installer| 
  installer.pods_project.build_configurations.each do |config|
    if config.name == 'Release'
      config.build_settings['Swift_OPTIMIZATION_LEVEL'] = '-Owholemodule'
    else
      config.build_settings['Swift_OPTIMIZATION_LEVEL'] = '-Onone'
    end    
  end
end
20
Mike Vosseller