Какие предварительные условия для заказа обрабатываются в файле GNU Make?

Если Вы передаете содержание корневого каталога также, то да. В ударе это-/home/user/.bash_history, например.

3
28.07.2015, 00:01
3 ответа

Порядок не указан и может выполняться в любом порядке. Это не просто теоретическая проблема. Это может произойти во время параллельных сборок. Предполагая тот же 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-файл ), определяет порядок от левого -до -правого при обработке предварительных условий.

2
27.01.2020, 21:27

Хотя из документации это не ясно, запустив пример, вы обнаружите, что порядок действительно слева направо.

myrule_step1
myrule_step2
myrule
1
27.01.2020, 21:27

Порядок -только предпосылок не касается порядка, в котором они обрабатываются. Их можно обрабатывать в любом порядке и даже параллельно. Приказ -означает только то, что обновление предпосылки не приводит к обновлению цели. См. этот ответ .

0
13.05.2021, 10:00

Теги

Похожие вопросы