Обработка команд
На стадии обработки команд решается вопрос - нужно ли выполнять описанные в правиле команды или нет. Считается, что нужно выполнять команды если:
- Цель является именем действия (абстрактной целью)
- Цель является именем файла и этого файла не существует
- Какая-либо из зависимостей является абстрактной целью
- Цель является именем файла и какая-либо из зависимостей, являющихся именем файла, имеет более позднее время модификации чем цель.
В противном случае (если ни одно из вышеприведенных условий не выполняется) описанные в правиле команды не выполняются. Алгоритм принятия решения о выполнении команд схематично можно представить так:
НужноВыполнятьКоманды( Правило ) { если Правило.Цель.ЯвляетсяАбстрактной() return true
// цель является именем файла
если ФайлНеСуществует( Правило.Цель ) return true
цикл от i=1 до Правило.Число_зависимостей { если Правило.Зависимость[ i ].ЯвляетсяАбстрактной() return true иначе // зависимость является именем файла { если ВремяМодефикации( Правило.Зависимость[ i ] ) >
ВремяМодефикации( Правило.Цель ) return true } }
return false }
Содержание раздела