Partager via


Spécification d'étapes de génération personnalisée

Mise à jour : novembre 2007

Une étape de génération personnalisée fournit au système de génération les informations dont il a besoin pour générer des fichiers de sortie à partir d'un fichier d'entrée. Une étape de génération personnalisée est attachée à son fichier d'entrée ; elle contient les commandes à exécuter, la liste des fichiers de sortie qui sont générés par ces commandes et, éventuellement, une description de la commande.

Pour plus d'informations sur les étapes de génération personnalisée, consultez Présentation des étapes de génération personnalisée et des événements de génération.

Pour spécifier une étape de génération personnalisée

  1. Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d'informations, consultez Définition des propriétés de projets Visual C++.

  2. Dans la zone Configuration, sélectionnez la configuration pour laquelle vous voulez spécifier une étape de génération personnalisée.

  3. Dans l'Explorateur de solutions, sélectionnez le fichier d'entrée de l'étape de génération personnalisée.

    Si le dossier Étape de génération personnalisée n'est pas affiché, cela signifie que le fichier que vous avez sélectionné est associé à une étape par défaut. Par exemple, les fichiers .c et .cpp possèdent une étape par défaut pour appeler le compilateur. Pour substituer un paramètre par défaut, modifiez la propriété Tool, qui se trouve dans le dossier Propriétés de configuration.

  4. Spécifiez les propriétés associées à l'étape de génération personnalisée :

    • Dans Additional Dependencies, spécifiez éventuellement des fichiers supplémentaires en plus de celui pour lequel l'étape de génération personnalisée est définie (le fichier associé à l'étape de génération personnalisée est considéré implicitement comme étant une entrée pour l'étape). Une étape de génération personnalisée ne nécessite pas obligatoirement l'existence de fichiers d'entrée supplémentaires. Si vous disposez de plusieurs fichiers d'entrée, séparez-les par des points-virgules.

      Si la date d'un fichier Additional Dependencies est postérieure à celle du fichier d'entrée, la règle de génération personnalisée sera alors exécutée. Si tous les fichiers Dépendances supplémentaires sont plus anciens que le fichier d'entrée, et que le fichier d'entrée est plus ancien que le fichier Sorties, l'étape de génération personnalisée ne sera pas exécutée.

      Par exemple, supposons qu'une étape de génération personnalisée utilise MyInput.x en entrée et génère MyInput.cpp, et que MyInput.x inclut un fichier d'en-tête, MyHeader.h. Vous pouvez spécifier MyHeader.h comme dépendance d'entrée à MyInput.x et le système de génération générera MyInput.cpp lorsqu'il n'est plus à jour par rapport à MyInput.x ou MyHeader.h.

      Les dépendances d'entrée garantissent également l'exécution des étapes de génération personnalisée dans l'ordre que vous souhaitez. Supposons, en reprenons l'exemple précédent, que MyHeader.h soit en fait la sortie d'une étape de génération personnalisée. Dans la mesure où MyHeader.h est une dépendance de MyInput.x, le système de génération génère d'abord MyHeader.h avant d'exécuter l'étape de génération personnalisée sur MyInput.x.

    • Dans Ligne de commande, spécifiez la syntaxe de la règle de génération personnalisée. Cette syntaxe peut inclure toute commande valide sur la ligne de commande ou dans un fichier .bat. Vous pouvez, le cas échéant, utiliser les macros pour les propriétés et les commandes de génération afin de spécifier des emplacements de fichier ou obtenir le nom du fichier d'entrée dans le cas de sélections multiples. Le nom d'un fichier batch doit être précédé de call pour garantir l'exécution de toutes les commandes suivantes.

    • Dans Description, tapez une description de l'étape de génération personnalisée. Ce texte s'affichera dans la fenêtre Sortie lorsque le système de génération traitera cette étape.

    • Dans Outputs, spécifiez le nom du fichier de sortie. Cette information est obligatoire ; sans une valeur pour cette propriété, l'étape de génération personnalisée ne s'exécute pas. Si une étape de génération personnalisée possède plusieurs sorties, séparez les noms de fichiers par un point-virgule.

      Le nom du fichier de sortie doit correspondre à ce qui est spécifié dans la propriété Ligne de commande. Le système de génération de projet recherchera le fichier et vérifiera sa date. Si le fichier est plus récent que le fichier d'entrée ou que le fichier est introuvable, l'étape de génération personnalisée sera exécutée. Si tous les fichiers Dépendances supplémentaires sont plus anciens que le fichier d'entrée, et que le fichier d'entrée est plus ancien que le fichier Sorties, l'étape de génération personnalisée ne sera pas exécutée.

Si vous voulez que le système de génération traite un fichier de sortie généré par l'étape de génération personnalisée, vous devez l'ajouter manuellement au projet. L'étape de génération personnalisée mettra à jour le fichier pendant la génération.

Exemple

Supposons que vous souhaitiez inclure dans votre projet un fichier nommé parser.l. Vous souhaitez qu'un analyseur lexical traite parser.l pour produire un fichier .c portant le même nom de base (parser.c).

Dans un premier temps, ajoutez parser.l et parser.c au projet. Si les fichiers n'existent pas encore, ajoutez simplement une référence à ces fichiers. Ensuite, créez une étape de génération personnalisée pour parser.l et tapez le texte suivant dans la propriété Commandes :

lexer $(InputPath) .\$(InputName).c

Cette commande exécutera l'analyseur lexical sur parser.l et produira en sortie parser.c dans le répertoire du projet.

Dans la propriété Outputs, tapez le texte suivant :

.\$(InputName).c

Lors de la génération du projet, le système de génération compare les horodatages de parser.l et de parser.c. Si parser.l est plus récent, ou si parser.c n'existe pas, le système de génération exécute la propriété Commande pour actualiser parser.c. Comme parser.c a également été ajouté au projet, le système de génération procède alors à la compilation de parser.c.

Voir aussi

Référence

Dépannage des étapes de génération personnalisée et des événements de génération

Autres ressources

Macros pour les propriétés et les commandes de génération