Компиляция — эффективный пункт C ++ 31: перекомпиляция

Я читаю Effective C ++ Item 31: Минимизируйте зависимости компиляции между файлами.

Это говорит:
введите описание изображения здесь

Я сделал небольшой тест с кодом ниже:

//A.h

#ifndef A_H
#define A_H
#include <iostream>

class A
{
public:
A();
int getInt();
int i;
};

#endif

//A.cpp

#include "A.h"
A::A():i(97)
{}

int A::getInt()
{
return 2;
}

//TestA.h

#include "A.h"class TestA
{
public:
TestA();
int getInt();
A a;
};

//TestA.cpp

#include "TestA.h"TestA::TestA():a(A())
{}

int TestA::getInt()
{
return a.getInt();
}

У меня есть три класса, как TesetA,

Сначала я компилирую их с помощью make-файла. Затем я делаю некоторые изменения для класса A, Например, добавьте некоторые новые данные и функции-члены, измените значение getInt(), Я перекомпилирую их.
Однако я обнаружил, что только A.cpp был перекомпилирован.

Вот мой make-файл:

ibcpp=-std=c++11 -stdlib=libc++

all: res.out

res.out: main.o FactoryA.o TestA.o TestB.o A.o
g++ $(libcpp) main.o FactoryA.o TestA.o TestB.o A.o -o0 res.out

main.o: main.cpp
g++ $(libcpp) -c main.cpp -O0 -o main.o

FactoryA.o: FactoryA.cpp
g++ $(libcpp) -c FactoryA.cpp -O0 -o FactoryA.o

TestA.o: TestA.cpp
g++ $(libcpp) -c TestA.cpp -O0 -o TestA.o

TestB.o:TestB.cpp
g++ $(libcpp) -c TestB.cpp -O0 -o TestB.o

A.o: A.cpp
g++ $(libcpp) -c A.cpp -O0 -o A.o

Теперь я в замешательстве. Если я правильно понимаю пункт 31, не следует ли перекомпилировать все файлы?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector