【发布时间】: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.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。但是,如果我重建,那么我会得到我所期望的错误。我尝试启用/禁用增量链接、最小重建、托管增量构建。
我可以通过从我的中间目录中删除 .obj 和 .tlog 文件来实现所需的行为。
感谢任何帮助
谢谢 苏梅
【问题讨论】:
-
几年前我问过这个问题,但我没有得到满意的答案。 stackoverflow.com/questions/12982025/….
标签: c++ msbuild visual-studio-2019