2015-05-20 2 views
0

Make может определить, был ли файл изменен с момента последнего вызова make. Я предполагаю, что он сравнивает времена модификации файлов с временем их последней сборки. Для этого ему пришлось бы хранить последние времена на диске, не так ли?Как определить, когда файл не был изменен?

Кто-нибудь знает, где и где и как это делается?

Спасибо.

+0

Посмотрите на 'stat' программу командной строки unix. Записывает файлы ecord mtimes по существу. просто проверить эти –

ответ

1

Это не так.

Вместо этого он сравнивает время модификации цели с временем модификации ее зависимостей. Так что, когда вы имеете правило

foo-sorted: foo; sort $< > [email protected] 

модификация времен foo-sorted и foo сравниваются.

2

Я думаю, вы не выглядеть слишком трудно найти ответ:

http://www.gnu.org/software/make/ Если целевой файл новее, чем все его зависимости, то уже в курсе, и это не нужно для регенерации.

http://www.gnu.org/software/make/manual/html_node/Rule-Syntax.html Критерием устаревания определяется в терминах предпосылки, которые состоят из имен файлов, разделенных пробелами. [...] Цель устарела, если она не существует или она старше любого из предварительных условий (путем сравнения времени последней модификации). Идея состоит в том, что содержимое целевого файла вычисляется на основе информации в предварительных условиях, поэтому, если какое-либо из предварительных условий изменяется, содержимое существующего целевого файла больше не обязательно является допустимым.

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.htmlсделать утилита проверяет время отношения и обновляет эти полученные файлы (так называемые цели), которые измененными раза раньше, чем измененные времена файлов (называемых предпосылок), из которых они получены.