使用Visual Studio 2012构建基本C ++项目。当我对源文件进行更改时:
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".
答案 0 :(得分:1)
在逐个检查属性表中的所有选项后,似乎问题的唯一来源是我们将中间目录设置为另一个驱动器上的目录。我们总是在%TEMP%中完成源代码构建,并且大多数时候项目都驻留在另一个驱动器上。
提交了一份错误报告here,其中包含可以重现问题的简单步骤。希望这很快得到修复。目前的解决方案是将IntDir设置为与项目位于同一驱动器上的直线目标。
<强>更新强>
针对此问题提交的错误报告已关闭为“按设计”:似乎中间目录不应为%TEMP%或%TMP%或其中的任何子目录。令人不安,但至少我知道现在出了什么问题。