Makefile для проекта, который имеет вложенные файлы .h - PullRequest
0 голосов
/ 08 мая 2019

Предположим, что a1.c и a2.c включают a.h, что, в свою очередь, включает b.h. Так что a1.c и a2.c зависят от b.h косвенно.

Теперь я хотел бы, чтобы make-файл компилировал оба файла .c, если b.h будет изменен. Одним из способов является добавление b.h в список зависимостей каждого правила вместе с a.h. Но я чувствую, что это может усложнить ситуацию, когда проект станет больше и сложнее. Другим способом может быть добавление правила для touch ing a.h при каждом изменении b.h. (Я не пробовал последнее)

Каков наилучший способ работы с вложенными зависимостями в make-файле?

Что я подразумеваю под «лучшим способом»:

  1. make-файл настолько компактен и прост, насколько это возможно

  2. каждый файл .c компилируется только при изменении хотя бы одного из связанных с ним файлов .h

  3. не зависит от возможностей или инструментов конкретного компилятора или ОС

1 Ответ

2 голосов
/ 08 мая 2019

gcc -MM *.c будет выводить зависимости по мере необходимости.

a1.o: a1.c a.h b.h
a2.o: a2.c a.h b.h

Это, в свою очередь, может использоваться как есть, как встроенные правила (с указанием макросов CC и CFLAGS).

Чтобы избежать повторной генерации make-файла после каждого изменения, рассмотрите возможность использования CMake и / или IDE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...