我在使用Visual 2019 / CMake / ninja创建的项目中遇到无法检测到的依赖关系的问题。为了说明这个问题,我创建了一个带有两个类ClassA和ClassB的小案例。
ClassA的.cpp文件为:
#include "ClassA.h"
#include "ClassB.h"
ClassA::ClassA()
{}
ClassA::~ClassA()
{}
void ClassA::callPrivateB()
{
ClassB toto;
toto.privateFct();
}
ClassB的.h文件是:
#pragma once
class ClassB
{
public:
ClassB();
~ClassB();
void privateFct();
};
main.cpp是:
#include <ClassA.h>
int main(int argc, char* argv[])
{
ClassA toto;
toto.callPrivateB();
return 0;
}
注意:ClassA.h,ClassB.cpp和CMakeLists.txt也未添加,也不要放入很多代码中。
我正在编译此应用程序。一切正常。那是正常的。现在,我将文件ClassB.h更改为privateFct私有。然后,我要求重新编译该应用程序。结果是:
ninja: no work to do.
Generate all: OK.
那么,忍者没有发现ClassA.cpp依赖于ClassB.h的事实吗? cmake?视觉? 关于如何解决此问题的任何想法?