【问题标题】:VS 2017 recompiles all files every timeVS 2017 每次都会重新编译所有文件
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多