【问题标题】:Visual Studio 2019 not building all cpp files when a header file changes头文件更改时,Visual Studio 2019 未构建所有 cpp 文件
【发布时间】:2020-10-16 18:30:38
【问题描述】:

我一直试图弄清楚为什么 Visual Studio 没有重新编译受我的库项目中的头文件更改影响的所有编译单元。

假设我有以下头文件TestA.h

class TestA
{
    public:
    int GetNumber() { return 0 };

    std::string GetString(); // implemented in TestA.cpp

}

假设我有 3 个 .cpp 文件 TestA.cpp TestB.cpp TestC.cpp

TestA.cpp仅包含TestA的函数实现

但是TestB.cppTestC.cpp 都遵循类似的规则:

#include "TestA.h"

....

TestA* aObject = new TestA();

int aNumber = aObject->GetNumber();

...

这就是现在的问题所在,如果我将 TestA.h 中的函数 GetNumber 更改为 GetNumber1 Visual Studio 和 msbuild 命令行将只构建 TestA.cpp,它将成功编译。然后它将使用现在陈旧的 .obj 文件生成 .lib。但是,如果我重建,那么我会得到我所期望的错误。我尝试启用/禁用增量链接、最小重建、托管增量构建。

我可以通过从我的中间目录中删除 .obj 和 .tlog 文件来实现所需的行为。

感谢任何帮助

谢谢 苏梅

【问题讨论】:

标签: c++ msbuild visual-studio-2019


【解决方案1】:

因此,在用尽我所有的想法后,我决定尝试重新创建该项目。这解决了它!不确定到底发生了什么,但删除所有 vcxproj 文件并从头开始重新创建 vcxproj 解决了我的问题。不确定到底发生了什么变化,但这似乎解决了它

【讨论】:

  • 您可以点击答案下方的Click the button like this.
  • 我遇到了完全相同的问题。根据您的回答,我查看了 .vcxproj 文件并发现了问题。编译时未包含 .cpp 文件(使用 <ClInclude Include="MyFile.cpp" />)。由于某些奇怪的原因,它被包含为非代码文件(使用<None Include="IFilter.h" />)。我用ClInclude 替换了None,然后它起作用了。您重新创建 .vcxproj 文件基本上做了同样的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-10
  • 1970-01-01
  • 1970-01-01
  • 2020-03-31
  • 1970-01-01
  • 1970-01-01
  • 2021-01-20
相关资源
最近更新 更多