Die ausführbare Datei wurde nicht neu erstellt, aber die Objektdateien wurden neu kompiliert
Erstellen eines grundlegenden C ++ - Projekts mit Visual Studio 2012. Wenn ich Änderungen an Quelldateien vornehme:
Die entsprechenden Objektdateien werden kompiliertDie .tlog-Dateien für den Compiler werden aktualisiertDie PDB-Datei wird aktualisiertDie .tlog-Dateien für den Linker werden jedoch nicht geändertder Linker behauptetAll outputs are up-to-date.
und erstellt keine neue ausführbare Datei.Die einzige Möglichkeit, die ausführbare Datei zu erstellen, besteht darin, sie zu löschen. Es scheint, dass etwas mit dem Tracking-System nicht stimmt, und ich habe mich gefragt, ob jemand etwas Licht in dieses Problem bringen kann.
Hier ist die Ausgabe von msbuild, nachdem ich zwei Dateien geändert habe, vollständige Pfade und einige andere Dinge weggelassen habe (diese Ausgabe gilt für das VS2010-Toolset, aber 2012 verhält sich genauso):
1>Target "ClCompile" in file "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.targets"...
Using "CL" task from assembly "Microsoft.Build.CppTasks.Win32, Version=4.0.0.0...
Task "CL"
Read Tracking Logs:
cl.read.1.tlog
CL.2520.read.1.tlog
...
Outputs for ....
XXX.OBJ
YYY.OBJ
...
xxx.cpp will be compiled as xxx.cpp was modified...
yyy.cpp will be compiled as yyy.cpp was modified...
Write Tracking Logs:
cl.write.1.tlog
CL.2520.write.1.tlog
...
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\CL.exe ....
Tracking command:
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\Tracker.exe ....
xxx.cpp
yyy.cpp
Done executing task "CL".
1>Done building target "ClCompile" in project "xxx.vcxproj".
So weit, ist es gut. Jetzt tritt der Linker ein (nun, das tut er nicht):
1>Target "Link" in file "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.targets"....
Using "Link" task from assembly "Microsoft.Build.CppTasks.Win32, Version=4.0.0.0...
Task "Link"
Using cached output dependency table built from:
link.write.1.tlog
Using cached input dependency table built from:
ink.read.1.tlog
Outputs for ....
MY.EXE
MY.PDB
All outputs are up-to-date.
Done executing task "Link".
Task "Message"
xxx.vcxproj -> my.exe
Done executing task "Message".
1>Done building target "Link" in project "xxx.vcxproj".