C++ VS 2017每次重新编译所有文件

C++ VS 2017每次重新编译所有文件,c++,visual-studio,build,C++,Visual Studio,Build,每当我按下Build>buildsolution(F7)时,VisualStudio都会重建整个项目。即使代码没有修改 它发生在所有项目上,我可以用一个空白项目重现“bug”。显然,它与跟踪日志文件有关。以下是您可以在诊断生成日志输出中找到的内容: pch.cpp will be compiled because it was not found in the tracking log. (TaskId:22) 让我给你看一个我问题的完整例子 首先,我创建一个空项目。 我的构建和运行设置如下所

每当我按下Build>buildsolution(F7)时,VisualStudio都会重建整个项目。即使代码没有修改

它发生在所有项目上,我可以用一个空白项目重现“bug”。显然,它与跟踪日志文件有关。以下是您可以在诊断生成日志输出中找到的内容:

pch.cpp will be compiled because it was not found in the tracking log. (TaskId:22)
让我给你看一个我问题的完整例子

首先,我创建一个空项目。 我的构建和运行设置如下所示。 第一次构建时,我得到以下信息:

1>------ Build started: Project: SimpleTrackingLogTest, Configuration: Debug Win32 ------
1>pch.cpp
1>SimpleTrackingLogTest.cpp
1>SimpleTrackingLogTest.vcxproj -> C:\kmasson\lab\SimpleTrackingLogTest\Debug\SimpleTrackingLogTest.exe
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
第二次构建时,在不修改代码的情况下,我得到了完全相同的输出

在位于
Debug\SolutionName.log
的完整日志中,您可以通过使用Ctrl+F搜索“将被编译”找到重新编译所有文件的原因。每个源文件有一行

Read Tracking Logs: (TaskId:22)
 Debug\SimpleTr.7CB9D8E0.tlog\CL.read.1.tlog (TaskId:22)
 Outputs for ...\SIMPLETRACKINGLOGTEST\SIMPLETRACKINGLOGTEST\PCH.CPP: (TaskId:22)
      ...\SIMPLETRACKINGLOGTEST\SIMPLETRACKINGLOGTEST\DEBUG\PCH.OBJ (TaskId:22)
      ...\SIMPLETRACKINGLOGTEST\SIMPLETRACKINGLOGTEST\DEBUG\SIMPLETRACKINGLOGTEST.PCH (TaskId:22)
 pch.cpp will be compiled because it was not found in the tracking log. (TaskId:22)
CL.read.1.tlog
包含许多指向程序文件(x86)和窗口的行,但也包含以下两行(
^
确实在文件中):

我不明白为什么跟踪日志文件不起作用。它发生在我正在进行的一个大项目上,它只是无法使用,每次我想要构建它时,它都会重建整个项目。而且,对于我正在进行的大项目来说,跟踪日志文件似乎太小了。好像它没有产生它应该产生的东西

我在网上搜索了有关跟踪日志文件的信息,但关于它们的信息很少。我试图完全重新安装Visual studio,禁用Windows Defender并删除我的本地用户临时目录


如果您需要有关我的设置的任何信息,请询问。

我找到了一种让它工作的方法。这与项目的位置有关。它在
C:\Users\kmasson
上工作,但不在
C:\kmasson
中工作。虽然我有读/写权限,甚至尝试以管理员身份运行VS。我不明白它为什么不起作用,但现在问题已经解决。

可以肯定的是,整个项目会重新编译,因为预编译的头会重新编译。为什么,这是一个问题,我测试创建一个新项目,但没有得到这种行为。如果不使用预编译头,可能会停用它们(属性->C/C++-?预编译头->预编译头使用->不使用预编译头)。它的副作用可能会解决你的问题issue@sandwood谢谢你尝试这个。预编译头似乎不是这里的问题。我想我注意到这和项目地点有关。我正在尝试一些事情,如果成功的话,我会发布答案。
^C:\...\SIMPLETRACKINGLOGTEST\SIMPLETRACKINGLOGTEST\PCH.CPP
... Some .DLL
^C:\...\SIMPLETRACKINGLOGTEST\SIMPLETRACKINGLOGTEST\SIMPLETRACKINGLOGTEST.CPP
... Many .DLL,.NDS, .H..