Используя GNU make, возможно ли создать набор целей, которые никогда не будут запланированы в одно и то же время при использовании параметра "--jobs"?
Справочная информация:
Чтобы сделать это немного более конкретным, рассмотрим make-файл вида
p1: ...deps... # no parallelization conflicts (can run at the same time as p*, e*)
...rules...
p2: ...deps... # no parallelization conflicts (can run at the same time as p*, e*)
...rules...
p3: ...deps... # no parallelization conflicts (can run at the same time as p*, e*)
...rules...
e1: ...deps... # cannot run at same time as any other e*
...rules...
e2: ...deps... # cannot run at same time as any other e*
...rules...
e3: ...deps... # cannot run at same time as any other e*
...rules...
Главное, что мне нужно сделать, это убедиться, что e1, e2 и e3 никогда не обрабатываются одновременно, потому что они выполняют некоторую работу на встроенном устройстве с ограниченными ресурсами. Они терпят крах, если несколько из них выполняются одновременно. p1, p2 и p3 могут выполняться параллельно с чем угодно, включая любую работу e *.
Обратите внимание, что у настоящего make-файла есть несколько тысяч целей с деревом зависимостей глубиной около 10 уровней, поэтому я надеюсь, что есть способ сделать это, чтобы (a) не требовалось запускать make поочередно и (b) сохранять Преимущества кодирования дерева зависимостей в make-файле.