Ich verwende yacc und lex mit Visual Studio 2012 C++/CLI und habe einen benutzerdefinierten Build-Schritt für die yacc-Quelldatei erstellt, wie im Bild unten gezeigt
Für die Ausgabedatei gibt es zwei Abhängigkeiten. Es handelt sich um die yacc-Quelldatei icl5kyacc.y und die Vorlagendatei yyparse.c. Jedes Mal, wenn ich die Lösung erstelle, wird der benutzerdefinierte Erstellungsschritt ausgeführt, auch wenn die Quelldateien yyparse.c und icl5kyacc.y nicht geändert wurden. Hier ist die Verzeichnisliste nach einem Build.
21-Sep-2012 10:19:18p 28,210 A icl5kyacc.y
17-Sep-2012 7:32:06p 9,042 A yyparse.c
22-Sep-2012 11:43:56a 38,233 A ICL5KYACC.cpp
22-Sep-2012 11:43:56a 2,160 A icl5kyacc.h
Und nach dem Wiederaufbau
2> Generierung von icl5kyacc.cpp aus icl5kyacc.y
21-Sep-2012 10:19:18p 28,210 A icl5kyacc.y
17-Sep-2012 7:32:06p 9,042 A yyparse.c
22-Sep-2012 11:45:46a 38,233 A ICL5KYACC.cpp
22-Sep-2012 11:45:46a 2,160 A icl5kyacc.h
Irre ich mich, wenn ich glaube, dass die Verwendung eines benutzerdefinierten Build-Schrittes automatisch Standard-Abhängigkeitsregeln zwischen den Eingabe- und Ausgabedateien des Build-Schrittes anwenden sollte? Eine Sache, auf die ich neugierig bin, ist die %(AdditionalInputs) Makro, das Studio für mich unter Additional Dependencies eingefügt hat. Ich bin mir nicht sicher, was das ist oder ob es irgendwie auf eine Datei verweist, die gerade geändert wird.