LINUX.ORG.RU

[SOLVED]Help me with Makefile, pls

 ,


0

1
%.o: %.cpp
	g++ -c $<

test.out: main.o
	g++ main.o -o $@

main.o: main.cpp header1.h
header1.h: header2.h

header2.h изменен, но make говорит, что цель test.out не требует выполнения команд.

ЧЯДНТ?



Последнее исправление: n0name_anonymous (всего исправлений: 1)

Ясно, что:

main.o: main.cpp header1.h header2.h
- работает.

Но если main.cpp напрямую не зависит от header2.h, это, во-первых, не логично, во-вторых, не удобно при сборке чего-нибудь побольше

n0name_anonymous
() автор топика

Изменение «header2.h» не вызывает изменение «header1.h».

«header1.h» не изменился - нечего делать.

anonymous
()
Ответ на: комментарий от n0name_anonymous

Набросок

-include main.d

%.o: %.cpp:
	gcc -MMD -MF $*.d -o $@ $<

gcc -MMD -MF $*.d - генерит зависимости в формате мейкфайла -include - (внимание! минус впереди) подключает мейкфайл, если он существует

anonymous
()

Не используешь нормальную систему сборки типа CMake. А так-то с точки зрения main.o header1.h не менялся и пересобирать нечего. Вот если бы header1.h генерился, то работало бы.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Вот если бы header1.h генерился, то работало бы.

грязный хак:

header1.h: header2.h
	touch header1.h
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.