Подтвердить что ты не робот

Как Makefile знает, что файл изменился (а затем перекомпилировал его)?

Просто из любопытства, как Makefile знает, что файл изменился (а затем перекомпилировать его)? Это до make? Это зависит от компилятора? Если да, то это зависит от языка?

4b9b3361

Ответ 1

Он смотрит на файл-штамп - просто. Если зависимость более новая, чем цель, цель перестраивается.

Ответ 2

Делайте работы, проверяя информацию о файлах, а не их содержимое.

Создавать зависимости между целями и их зависимостями, а затем проверяет, существуют ли файлы. Если это так, то запрашивает операционную систему о времени и дате последнего изменения файла. Это "метка времени" для этой цели, хотя этот термин может иметь и другие значения.

Если целевой файл либо не существует, либо существует, либо находится раньше, чем его зависимый файл, тогда Make перестраивает цель из зависимого, применяя правило.

Если зависимая не существует, выведите сообщение об ошибке.

Следствием этого является то, что вы можете заставить перестроить, удалив цель или "прикоснувшись" к зависимому, чтобы сделать ее позже цели. Вы можете избежать перестроения, "касаясь" цели. Прикосновение просто обновляет метку времени.