Проблема зависимости между файлами с использованием Visual 2019 / CMake / Ninja - PullRequest
0 голосов
/ 06 ноября 2019

У меня проблема с необнаруженными зависимостями в проекте, который я создаю с помощью 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? Визуальная? Есть идеи, как решить эту проблему?

...