【发布时间】:2019-08-16 22:06:01
【问题描述】:
每当我按 Build > Build Solution (F7) 时,Visual Studio 都会重新构建整个项目。即使代码没有被修改。
它发生在所有项目上,我可以用空白项目重现“错误”。显然,它与跟踪日志文件有关。以下是您可以在 Diagnostic 构建日志输出中找到的内容:
pch.cpp will be compiled because it was not found in the tracking log. (TaskId:22)
让我向您展示我的问题的完整示例。
首先,我创建一个空项目。 我的 Build and Run 设置如下。 第一次构建时,我得到以下信息:
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 包含许多指向 Program Files (x86) 和 Windows 的行,还有以下 2 行 (^真的在文件里):
^C:\...\SIMPLETRACKINGLOGTEST\SIMPLETRACKINGLOGTEST\PCH.CPP
... Some .DLL
^C:\...\SIMPLETRACKINGLOGTEST\SIMPLETRACKINGLOGTEST\SIMPLETRACKINGLOGTEST.CPP
... Many .DLL,.NDS, .H..
我不明白为什么跟踪日志文件不起作用。它发生在我正在处理的一个大项目上,它只是无法使用,每次我想构建它时都会重建整个项目。此外,对于我正在从事的大型项目,跟踪日志文件似乎太小了。就像它没有产生它应该产生的东西一样。
我在网上搜索了有关跟踪日志文件的信息,但关于它们的信息很少。我尝试完全重新安装 Visual Studio,禁用 Windows Defender 并删除我的本地用户 Temp 目录。
如果您需要有关我的设置的任何信息,请询问。
【问题讨论】:
-
可以肯定的是,整个项目会被重新编译,因为预编译的头文件会被重新编译。为什么,这是个问题,我测试创建一个新项目并没有得到这种行为。如果您不使用预编译头文件,您可能会停用它们(属性 -> C/C++ -?预编译头文件 -> 使用预编译头文件 -> 不使用预编译头文件)。它可能会通过副作用解决您的问题
-
@sandwood 感谢您的尝试。预编译的标头似乎不是这里的问题。以为我注意到它与项目位置有关。我正在尝试一些事情,如果可行,我会发布答案。
标签: c++ visual-studio build