Makefile: Эффективный способ сделать так, чтобы все файлы .c зависели от файла заголовка с одинаковым именем? - PullRequest
6 голосов
/ 25 июня 2010

У меня есть каталог с 50 .c исходными файлами, и каждый из этих .c файлов зависит от .h файла с тем же именем и общим заголовочным файлом.

Пример:

foo.c depends on foo.h and common.h
bar.c depends on bar.h and common.h
baz.c depends on baz.h and common.h

Можно ли установить эту зависимость без необходимости создавать отдельную цель для каждого файла .c?

В случае, если это имеет значение, конечный результат этого Makefile будет libfoo.a библиотека, содержащая каждый из этих .o файлов.

Редактировать

Если это вообще возможно, я хотел бы сделать это с синтаксисом gnu make и не иметь цели для каждого файла независимо от того, была ли эта цель создана вручную или с помощью чего-то вроде makedepend.

Ответы [ 2 ]

9 голосов
/ 25 июня 2010

Насколько я знаю, этого должно быть достаточно.

%.o: %.c %.h common.h
\tgcc -c $<

\ t - это вкладка, а gcc -c $< - это, конечно, только пример.

4 голосов
/ 25 июня 2010
OBJECTS = $(patsubst %.c,%.o,$(wildcard *.c))
%.o: %.c %.h common.h
    gcc -c $< -o $@

libfoo.a: $(OBJECTS)
    ar rcs $@ $^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...