У меня проблема с необнаруженными зависимостями в проекте, который я создаю с помощью Visual 2019 / CMake / ninja. Для демонстрации этой проблемы я создал небольшой кейс с двумя классами ClassA и ClassB.
.cpp-файл ClassA:
#include "ClassA.h"
#include "ClassB.h"
ClassA::ClassA()
{}
ClassA::~ClassA()
{}
void ClassA::callPrivateB()
{
ClassB toto;
toto.privateFct();
}
.h-файл ClassB:
#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? Визуальная? Есть идеи, как решить эту проблему?