7
votes

équivalent de "toucher" en scons?

Scons utilise des haubans MD5 plutôt que des heures de fichier de fichier pour déterminer si une dépendance doit être construite.

Je veux que ce soit le comportement par défaut. Mais existe-t-il un moyen de le forcer à supposer qu'un fichier particulier est obsolète (l'équivalent de "touche"), en plus d'éditer le fichier pour le rendre différent?

EDIT: Etui:

Fichier binaire F est utilisé pour créer un autre fichier g à l'aide d'un outil X. Pour une raison quelconque, le fichier G a changé (il a été corrompu, ou je l'ai modifié) ou que l'outil X a changé, et Je veux recréer le fichier g et tout en aval de celui-ci.

EDIT: Ceci est pour une utilisation occasionnelle uniquement. Je ne veux pas que cela se produise toujours, seulement ces moments où je le demande. De plus, je ne connais peut-être pas le fichier particulier à l'avance. Pour cette raison, je ne veux pas modifier les fichiers SCONScript / Sconstruct pour créer un fichier particulier. Ce que je voudrais, c'est de le faire à une invite de commande: xxx

et cela obligerait les scons à construire tous les fichiers en fonction de FOOBAR.H, tandis que simplement taper Scons ferait la construction régulière à l'aide de HASHES MD5 pour la vérification de la dépendance. Cela ne me dérange pas d'éditer les fichiers SCONScript / Sconstruct à l'avance pour permettre cela (décenteur personnalisé, je suppose), s'il y a un moyen de le faire, cela n'augmente pas de manière significative les temps de construction.


0 commentaires

4 Réponses :


1
votes

Je ne pense pas qu'il y ait un moyen de le faire directement. Si le fichier source en question a une sortie évidente, telle que test.o créé à partir de test.c , puis supprime test.o une recompilation du fichier source.

Si, à la place, vous voulez toucher test.h qui est inclus dans plusieurs fichiers source différents, vous pourrez peut-être mieux faire un nettoyage de votre projet pour vous assurer que tout est reconstruit.

Cela dit, vous voudrez peut-être lire sur le Decider () fonction qui vous permet de choisir comment les dépendances des fichiers seront traitées. Vous pouvez même choisir une fonction de décision personnalisée pour des fichiers particuliers de votre projet, de sorte que si vous disposez d'un fichier global d'en-tête que vous souhaitez pouvoir toucher et de reconstruire, vous pouvez le faire.

Mise à jour: pour répondre à votre dernière question, supprimez simplement le fichier G. Scons le recréer de F en exécutant X la prochaine fois que vous construisez.


0 commentaires

0
votes

Je crée un fichier cible factice avec une date complète tout au long de l'heure et de la seconde. Ensuite, j'ai les autres étapes dépendent de ce fichier cible factice. Cela modifiera la valeur MD5 chaque fois que l'étape de construction recompille et provoquera les étapes ultérieures à recompiler. Sinon, vous pouvez enlever la cible factice et cela aussi cascade un recompilement.

Personnellement, je trouve cela très utile car je ne peux pas prédire toute la sortie de chaque étape de mon flux de construction EDA. Je ne veux pas non plus essayer de prédire toutes les sorties de chaque étape de construction en raison du coût de maintenance.

Je suis sûr que la fonction DÉCIDER (), comme GREG a mentionné, est plus de scons, mais j'aime personnellement avoir les fichiers horodatamp.


0 commentaires

0
votes

Dans votre fichier de sconstrique extrait le nœud qui représente votre fichier. Après cela, vous devriez pouvoir utiliser le nœud.always_build (true) pour vous assurer qu'il est construit, je pense que cela obligera ses personnes à charge à être reconstruites également.


1 commentaires

Merci, mais je ne veux pas faire cela toujours (c'est une tâche rare mais mal nécessaire), et je ne veux pas modifier les fichiers Sconstruct / Swonscript, je veux juste une façon de faire une reconstruction ponctuelle de force un fichier ou des fichiers particuliers et ses personnes à charge à reconstruire.



4
votes

Avez-vous consulté l'option --interactive Option of Scons, vous pouvez nettoyer et construire des cibles spécifiques.

Page de l'homme décrivant cela.


2 commentaires

Hein, je n'ai jamais su --interactive, ça va me sauver un peu de temps avec / des constructions répétées. Merci! Je pense que je peux l'utiliser pour ce que je voulais aussi.


Notez que si vous souhaitez vraiment déclencher de nouveaux appels aux compilations, vous devez faire des SCONS - Interactive - NO-Cache Sinon Commande interactive Build choisira uniquement du cache et non Exercez votre compilateur.