Ich verwende yacc und lex mit Visual Studio 2012 C++/CLI und haben einen benutzerdefinierten Schritt für die yacc Quelldatei erstellt, wie untenWarum führt Visual Studio 2012 einen benutzerdefinierten Buildschritt aus, wenn die Quelldatei nicht geändert wurde?
in Bild gezeigt gibt es zwei Abhängigkeiten für die Ausgabedatei . Sie sind die yacc Quelldatei icl5kyacc.y und die yyparse.c Vorlagendatei. Jedes Mal, wenn ich die Lösung erstelle, wird der benutzerdefinierte Build-Schritt auch dann ausgeführt, 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
2 wieder den Bau> Die Erzeugung icl5kyacc.cpp von 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
Täusche ich mich in der Annahme, dass die einen benutzerdefinierten Schritt unter Verwendung von automatisch Standardabhängigkeitsregeln gelten sollten zwischen den Eingabe- und Ausgabedateien des Erstellungsschritts? Eine Sache, auf die ich gespannt bin, ist das % (AdditionalInputs) Makro, das Studio für mich unter Zusätzliche Abhängigkeiten einfügt. Nicht sicher, was das ist oder ob das irgendwie auf eine Datei zeigt, die gerade geändert wird.
Das Entfernen des Makros **% (AdditionalInputs) ** hatte keine Auswirkungen auf das Problem. – JonN