Visual Studio 2019 头文件更改时未构建所有 cpp 文件
Visual Studio 2019 not building all cpp files when a header file changes
我一直在努力弄清楚为什么 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.cpp
和 TestC.cpp
都遵循这样的东西:
#include "TestA.h"
....
TestA* aObject = new TestA();
int aNumber = aObject->GetNumber();
...
这就是现在的问题所在,如果我将TestA.h中的函数GetNumber
更改为GetNumber1
Visual studio并且msbuild命令行只会构建TestA.cpp 编译成功。然后它将使用现在过时的 .obj 文件生成 .lib。但是,如果我重建,那么我会得到我预期的错误。我已尝试 enabling/disabling 增量链接、最小重建、托管增量构建。
我可以通过从中间目录中删除 .obj 和 .tlog 文件来实现所需的行为。
感谢任何帮助
谢谢
苏梅斯
因此,在用尽所有想法后,我决定尝试重新创建项目。那修好了!不确定到底发生了什么,但删除所有 vcxproj 文件并从头开始重新创建 vcxproj 解决了我的问题。不确定到底发生了什么变化,但这似乎解决了问题
我一直在努力弄清楚为什么 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.cpp
和 TestC.cpp
都遵循这样的东西:
#include "TestA.h"
....
TestA* aObject = new TestA();
int aNumber = aObject->GetNumber();
...
这就是现在的问题所在,如果我将TestA.h中的函数GetNumber
更改为GetNumber1
Visual studio并且msbuild命令行只会构建TestA.cpp 编译成功。然后它将使用现在过时的 .obj 文件生成 .lib。但是,如果我重建,那么我会得到我预期的错误。我已尝试 enabling/disabling 增量链接、最小重建、托管增量构建。
我可以通过从中间目录中删除 .obj 和 .tlog 文件来实现所需的行为。
感谢任何帮助
谢谢 苏梅斯
因此,在用尽所有想法后,我决定尝试重新创建项目。那修好了!不确定到底发生了什么,但删除所有 vcxproj 文件并从头开始重新创建 vcxproj 解决了我的问题。不确定到底发生了什么变化,但这似乎解决了问题