Если Вы передаете содержание корневого каталога также, то да. В ударе это-/home/user/.bash_history, например.
Порядок не указан и может выполняться в любом порядке. Это не просто теоретическая проблема. Это может произойти во время параллельных сборок. Предполагая тот же Makefile, что и в вопросе, я запустил:
watch -n 0.1 make -j8
Печать заняла всего несколько секунд:
myrule_step2
myrule_step1
myrule
См. также этот ответ StackOverflow Йорга В. Миттага:
No, the order is not defined. That is the whole point in using declarative dependency-oriented programming: that the computer can pick the optimal evaluation order, or in fact, evaluate them even at the same time.
Однако, как указывает mosvy, это верно только для GNU Make. POSIX make (, который можно эмулировать в GNU Make, добавив специальную цель .POSIX
в ваш make-файл ), определяет порядок от левого -до -правого при обработке предварительных условий.
Хотя из документации это не ясно, запустив пример, вы обнаружите, что порядок действительно слева направо.
myrule_step1
myrule_step2
myrule
Порядок -только предпосылок не касается порядка, в котором они обрабатываются. Их можно обрабатывать в любом порядке и даже параллельно. Приказ -означает только то, что обновление предпосылки не приводит к обновлению цели. См. этот ответ .