давайте предположим, что у меня есть некоторые Makefile для Unixправила Makefile
prog:a.o b.o c.o
gcc a.o b.o c.o -o prog
a.o:a.c a.h b.h
gcc -c a.c
b.o:b.c b.h
gcc -c b.c
c.o:c.c c.h b.h
gcc -c c.c
Я прочитал, что если я изменю * .c файл я должен перекомпилировать только этот файл, но если я поменяю * .h файл я должен перекомпилировать все файлы, которые зависят от моего файла * .h, после обоих случаев в любом случае I must link
все файлы с начала
1)
Предположим, что я меняю только bh, так что мне нужно делать? мой вариант make a.o b.o c.o
Я прав?
2)
Предположим, что я меняю только c.c, так что мне нужно делать? мой вариант make c.o
Я прав?
и, наконец, если я напишу make c.o
, например, мой makefile ONLY recompile c.o
, но what about linker
? У меня есть только gcc -c c.c
и не -o
заранее спасибо за любую помощь
На стороне примечания, если вы используете gnu make, вы можете удалить каждую строку в своем make-файле, начиная с 'gcc'. Стандартные правила (http://www.gnu.org/software/make/manual/html_node/Catalogue-of-Rules.html#Catalogue-of-Rules) для make могут выяснить, что вам нужно для большинства простых случаев. – jkerian