Добавление дополнительных зависимостей для всех файлов с заданным расширением - PullRequest
0 голосов
/ 03 марта 2019

Допустим, я использую неявное правило для создания файла .o из файла .c.

Если я хочу добавить определенную дополнительную зависимость для одного конкретного файла .o, это так же просто, как добавить правило без рецепта:

file.o : header.h

Это делает file.o зависимойна header.h в дополнение к file.c.

Что если я хочу сделать это для всех .o файлов?Следующее не работает:

%.o : header.h

1 Ответ

0 голосов
/ 03 марта 2019

Чтобы это имело смысл, header.h должен иметь заголовок, который (и должен быть) включен в каждый файл .c и, следовательно, является обязательным условием каждого файла .o.Если это ваша ситуация, вам нужно написать собственное правило шаблона, например:

%.o: %.c header.h
    $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@

Но обычный подход к управлению зависимостями файла заголовка - Генерация автозависимостей

Позже

Моя цель состояла в том, чтобы избежать дублирования существующего неявного правила (часть рецепта) для компиляции $ (CC).Возможно ли это?

Необходимо определить новое правило шаблона, которое добавляет header.h к обязательному условию %.c и имеет соответствующий рецепт.На самом деле, я бы посоветовал вам также отменить встроенное правило шаблона:

%.o: %.c

%.o: %.c header.h
    $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
...