Сделать раздел зависимости файла, должен иметь xh: yh? - PullRequest
2 голосов
/ 04 апреля 2011

В следующем (урезанном) файле make зависимости находятся внизу. Это часть реального файла make, который я пишу. В реальном случае есть заголовочный файл, зависящий от другого заголовка.

Я не смог найти ответ в другом месте, поэтому ... нужно ли мне включать строку внизу под зависимостями для эффекта "swap.h: other.h"?

SRC =       swap.c other.c etc
OBJ =       swap.o other.o etc
EXE =       swap

$(EXE): $(OBJ)
        $(CC) $(CFLAGS) -o $(EXE) $(OBJ) -lm

## Dependencies

swap.o: swap.h other.h
other.o:    other.h

Спасибо!

Ответы [ 2 ]

7 голосов
/ 04 апреля 2011

Поскольку ничего не нужно делать для swap.h, если other.h изменяется, даже если первые #include s секунды, короткий ответ - нет.

... Но, если какой-то источник C включает swap.h, а swap.h включает other.h, изменение в other.h повлияет на / объект, который должен быть сгенерирован из указанного источника C.

Как правило, однако, вы не хотите поддерживать свою зависимость заголовка вручную. Это трудоемко и подвержено ошибкам.

Существует несколько способов автоматического создания этих зависимостей.

Я могу порекомендовать бумагу Advanced Auto-Dependency Generation . Этот метод не идеален, но он настолько хорош, насколько это возможно с Makefiles.

0 голосов
/ 28 ноября 2011

Вот один способ определить зависимости между заголовочными файлами:

swap.h: other.h
    touch $@

Если other.h изменен, любая цель, которая зависит от swap.h, будет обновлена.

...