Question

Je développe un DSL avec son propre éditeur graphique. Ces fichiers ont une extension .own. J'ai aussi un petit outil qui compile des fichiers .own dans des fichiers .h.

X.own -> X.h et X / * h

.

J'ai écrit un simple fichier .rules pour lancer la génération.

Mon problème est le suivant : La plupart de mes fichiers sources comprennent X.h, mais un changement de X.own ne signifie pas le X.h généré (ou tout autre fichier généré) seront différents. Cette question est traitée par le générateur par l'utilisation de fichiers temporaires et comparaison de fichiers. Mais Visual Studio ne semble pas savoir comment faire face à tout cela. Si je mets la propriété « fichier de sortie (s) » au bon fichier (s), il suppose toujours qu'ils seront changés. Si je ne le fais pas, il génère son processus de construction en supposant qu'ils ne seront pas!

Comment puis-je faire les choses?

1) Lancer la construction personnalisée outil

2) Calcul de processus sur la base de la construction des dépendances

Était-ce utile?

La solution 2

La réponse de jheriko est intéressant, car il fournit un moyen de lancer outil personnalisé, puis générer les dépendances de construction. Mais ce n'est pas très utile, parce que vous perdez alors toutes les possibilités d'utiliser boîte à outils « construire des outils sur mesure », dans lequel vous pouvez

  • choisir de compiler toujours les fichiers avec une extension précise
  • sauter manuellement construire sur mesure pour un fichier particulier dans une configuration particulière du projet (et de visualiser cette décision)

Il n'y a aucun moyen (ou du moins j'ai trouvé aucun) « tout avoir ». La seule façon que j'ai trouvé est d'avoir l'outil de construction personnalisé renvoie un nombre non nul lorsque les fichiers ont été mis à jour, avec un message à l'utilisateur expliquant qu'il est pas une erreur et l'invitant à lancer construire à nouveau. La prochaine fois, outil de construction personnalisé est lancé à nouveau (pas optimale, mais l'outil est-je utiliser assez rapide) mais modifie pas nouveau fichier et processus de construction se poursuit, en utilisant les dépendances valides.

Note:. L'approche décrite ci-dessus ne fonctionne pas avec IncrediBuild, qui semble ignorer l'ordre de construction du projet

Autres conseils

Ne pas utiliser les options de l'outil de construction personnalisés mais mis en place vers le haut comme un événement pré-construction pour la solution (cela peut prendre une ligne de commande générale, comme l'outil de construction personnalisé). De cette façon, VSM n'examinera les fichiers générés. Tant qu'ils sont #include ou répertoriés dans l'explorateur de solution, ils devraient être compilés bien que la génération des fichiers .h va se passer avant toute autre compilation.

Je trouve l'outil de construction personnalisé n'est pas si utile que l'avant et après la construction des événements en général, en raison de la façon dont il attend des fichiers générés ou modifiés. Vous trouverez peut-être cet outil utile pour d'autres choses à l'avenir (par exemple pour comprimer le fichier .exe après génération, pour générer d'autres dépendances correctement, pour assurer que les fichiers sont en place, etc ...)

Il y a un diagramme montrant agréable où trouver ces options dans les propriétés de la solution

scroll top