Chargement automatique de fichiers de scripts.

En deux mots...

Objectif: Ne pas avoir à faire "source nomDuScript.tcl" pour chacun de mes fichiers de scripts à chaque fois que je lance un interpréteur Tcl.

Solution: ajouter les lignes suivantes en début du script principal:

auto_mkindex . *.tcl
set auto_path [linsert $auto_path 0 .]

Ensuite, on peut directement appeler n'importe quelle procédure définie dans un des fichiers *.tcl du répertoire courant.

Comment ça marche ?

On déclare un ensemble de répertoires dans lesquels se trouvent nos fichiers source (.tcl). Lorsque tcl doit évaluer une commande dont il ne connait pas le nom (par exemple une de vos procédures), tcl va parcourir ces répertoires et lire les fichiers "tclIndex" qui s'y trouvent. L'index fait l'association "nom de commande -> fichier à évaluer pour définir la commande". Si tcl trouve la commande dans l'index, il évalue automatiquement le fichier source qui défini cette commande, et l'évaluation globale peut continuer.

Il faut donc :

  1. créer un fichier index dans tous les répertoires qui contiennent nos fichiers source
  2. déclarer tout ces répertoires à tcl

Création du fichier index

La commande "auto_mkindex" crée un fichier index, par exemple :

auto_mkindex . *.tcl

crée un fichier index dans le répertoire courant.

Vous pouvez mettre une série de "auto_mkindex" au début de votre fichier script principal pour mettre à jour l'index de tout vos répertoires à chaque exécution de votre programme. Par contre, lorsque vous avez de nombreux fichier, ça prend un peu de temps au début de chaque utilisation...

Vous pouvez choisir de mettre à jour l'index "à la main" en créant un fichier, par exemple "mkIndex", dans chacun de vos répertoires. Ce fichier doit être rendu exécutable (voir "rendre un script exécutable" dans le cours TclTk). Ce fichier contient l'unique commande "auto_mkindex" présentée ci-dessus. Quand vous ajoutez de nouveaux fichiers dans un répertoire, exécutez ce script pour mettre à jour l'index.

Déclaration des répertoires

Il suffit de mettre à jour la variable globale "auto_path". Par exemple la commande :

set auto_path [linsert $auto_path . src]

insère le répertoire courant et le répertoire "src" (situé dans le répertoire courant) au débute de la liste "auto_path". Ces deux répertoires seront les premiers dans lesquels tcl partira à la recherche de la définition des commandes inconnues.

Et avec gml_Object.tcl ?

"auto_mkindex" ne repère que les procédures dans les fichiers de scripts, non pas les méthodes de gml_Object.tcl. Pour créer des index qui incluent les définitions de méthodes, télécharger et utiliser "gml_MakeIndex.tcl".

MAJ le 11 nov. 2003 (FB)
    Explication "en deux mots"
    Ajout de "gml_MakeIndex.tcl"

Créé par FB le 10 octobre 2001