Почему make-файл каждый раз перекомпилирует класс?

Вот мой makefile

all: main.o fileparam.o
        g++ -g $(LIBPATH) $(LIBS)  file_parameters.o main.o -o test
main.o: main.cpp
        g++ -g -Wall $(INCPATH) main.cpp -c

fileparam.o: file_parameters.cpp file_parameters.h
        g++ -g -Wall file_parameters.cpp -c

$ (LIBPATH) $ (LIBS) указывает на включаемые библиотеки, а $(INCPATH) указывает на другие включаемые файлы

По какой-то причине он перекомпилирует file_parameters.o каждый раз, когда я создаю программу, и мне было интересно, где я облажался. Спасибо!

Редактировать: он не перекомпилирует main.o каждый раз

2 ответа

Решение

Это:

fileparam.o: file_parameters.cpp file_parameters.h
        g++ -g -Wall file_parameters.cpp -c

должно быть:

file_parameters.o: file_parameters.cpp file_parameters.h
        g++ -g -Wall file_parameters.cpp -c

Кроме того, вызывая ваш выходной файл test может вызвать путаницу - измените на mytest,

Это потому, что ваша цель, fileparam.o, не генерируется правилами... вместо этого вы генерируете file_parameters.o. make видит, что цель не существует, поэтому она должна создать ее.

Другие вопросы по тегам