3
構建一個基本的C++項目與Visual Studio 2012年當我修改的源文件:的可執行程序絕不重建,但目標文件重新編譯
- 相應的對象文件被編譯
- 的.tlog文件編譯更新
- PDB文件被更新
- 的.tlog文件鏈接但沒有改變
- 鏈接聲稱
All outputs are up-to-date.
並且不建立一個新的可執行文件。
獲取可執行文件的唯一方法是將其刪除。跟蹤系統似乎有些錯誤,我想知道是否有人能夠解釋這個問題。
這裏是MSBuild的輸出我改變兩個文件,完整路徑後和一些其他的東西省略(這個輸出是VS2010工具集,但2012的行爲相同):
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".
到目前爲止,一切都很好。現在,鏈接器在踢(當然,事實並非如此):
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".
有趣的是,我有同樣的問題,但解決方案不適合我。 – Lev
您的中間/輸出目錄設置爲? – stijn
$(IntDir)是$(VmRoot)Temp \ $(ProjectName)\ $(Platform)\ $(Configuration)\,其中$(VmRoot)是開發環境的根,$(VmRoot)Temp不等於到%TMP%或%TEMP%。我目前正在測試這個限制也適用於名爲「Temp」的_all_目錄的子目錄。 – Lev