2016-04-27 2 views
1

Читаем Управление проектов с GNU Make и в главе 2, автор пишет следующий образ сделать поколению автоматического DEPENDENCYразница между следующими двумя способами сделать автоматическую генерацию зависимостей

depend: count_words.c lexer.c counter.c 
     $(CC) -M $(CPPFLAGS) $^ > [email protected] 

include depend 

Однако я как правило,

makedepend -I $(CC) -f $(MAKEFILE) count_words.c lexer.c counter.c 

Я не уверен, какой путь лучше или они служат эквивалентной цели и могут использоваться взаимозаменяемо?

Спасибо большое!

ответ

2

Я не могу думать о какой-либо разнице между этими двумя, хотя я полагаю, что первое означает, что вам нужен еще один инструмент для вашей сборки, поэтому он немного лучше.

Тем не менее, еще лучший метод заключается в добавлении -MMD -MP к вашим флагам препроцессора при компиляции, которая генерирует файлы зависимостей как побочный эффект самой компиляции.

SRCS := count_words.c lexer.c counter.c 
OBJS := $(SRC:.c=.o) 
DEPS := $(SRC:.c=.d) 

CPPFLAGS := -MMD -MP 

$(OBJS): 

-include $(DEPS) 
+0

Это правильный ответ. Вы получаете счастливую ситуацию зависимостей бесплатно, и они никогда не устарели. – bobbogo

Смежные вопросы