2013-02-10 3 views
3

Est-il possible d'écrire une fonction WAF dans un fichier wscript, qui sera appelée lors de la construction de chaque fichier modifié?Traitement des fichiers modifiés dans le script WAF

Je veux être en mesure de faire ce qui suit:

  1. processus tous les fichiers d'entrée .hpp par une fonction Python personnalisé et les sorties pour construire un dossier. Si un tel fichier a été modifié, je veux le traiter et mettre à jour sa définition dans le dossier de sortie.
  2. Traite tous les fichiers d'entrée .hpp via un script externe et affiche les résultats dans le dossier de construction.

MISE À JOUR:

Pour expliquer: Je veux pour chaque fichier modifié exécuter une fonction fun1(file), qui va lire le fichier, le modifier et le retour version modifiée, ce qui devrait pas être imprimés dans le répertoire de destination.

Répondre

1

Traitement des fichiers modifiés n'est l'une des principale caractéristique de WAF ^^

Pour exécuter votre fonction python, vous pouvez faire quelque chose comme ça:

top = '.' 
out = 'build' 


def configure(conf): 
    pass 

def build(bld): 

    def fun1(input_file): 

     # whatever 

     return output_file_content_as_string 

    def process(task): 

     for src_node in task.inputs: 

      src = src_node.abspath() 
      tgt = src_node.get_bld() 

      out = fun1(src) 

      tgt.write(out) 

     return 0 # everything ok 

    bld(
     rule = process, 
     source = ['myfile.hpp', 'myfile2.hpp', ], 
    ) 

Ceci appellera fun1 sur myfile.hpp , etc. et sortie dans le répertoire de construction uniquement sur les fichiers modifiés.

Par défaut waf gérer une signature pour toutes les sources pour détecter tout changement, et traiter que si le changement de signature ...

+0

Merci, mais je veux traiter le fichier avant de copier - permet de dire exécuter une fonction Python dessus - est-ce possible? –

+0

Oui. En fait, la fonction subst fait exactement cela si vous n'utilisez pas le paramètre is_copy = True. Il peut remplacer quelque chose dans la source pour obtenir la cible. Que voulez-vous faire exactement avec votre fichier? En passant, mettez à jour votre question pour la rendre plus claire/plus détaillée, c'est SO façon. – neuro

+0

Je veux le traiter avec ma fonction Python personnalisée (regardez la mise à jour dans la question). La fonction pourrait lire le fichier, l'analyser, modifier et afficher la version modifiée - Je veux le faire POUR CHAQUE fichier modifié. –

Questions connexes