СОВЕТЫ И ПРЕДОСТЕРЕЖЕНИЯ
Чаще всего причиной возникновения трудностей является специфическая трактовка утилитой make понятия зависимостей. Если файл x.c содержит строку
#include "defs.h"
считается, что от defs.h зависит объектный файл x.o, но не исходный файл x.c. Если defs.h изменяется, с x.c ничего не делается, в то время как x.o должен быть создан заново.
Чтобы понять, какие действия будет делать make, очень удобно использовать опцию -n. Обращение
make -n
предписывает выводить команды, которые make должен вычислять, не тратя на самом деле времени на их выполнение.
Если абсолютно точно известно, что изменение в файле касается только его внешнего представления (например, вставка комментария во включаемый файл), использование опции -t может сэкономить уйму времени. Вместо запуска большого числа ненужных перекомпиляций make просто обновит времена изменения затронутых файлов. Так, команда
make -ts
приведет в соответствие времена модификации соответствующих файлов. Очевидно, при использовании опции -t требуется осторожность, поскольку данный режим обработки отменяет первоначальное назначение утилиты make и разрушает всю информацию о более ранних изменениях.