Я намагаюся зробити наступне. Існує програма, назвіть її foo-bin
, яка містить один вхідний файл і генерує два вихідних файли. Тупим правилом Makefile для цього буде:
file-a.out file-b.out: input.in
foo-bin input.in file-a.out file-b.out
Однак це жодним чином не говорить про make
те, що обидві цілі будуть генеруватися одночасно. Це добре, коли ви працюєте make
серійно, але, ймовірно, викличе проблеми, якщо спробуєте make -j16
чи щось настільки ж шалено.
Питання полягає в тому, чи існує спосіб написати правильне правило Makefile для такого випадку? Зрозуміло, що це створило б DAG, але якось інструкція з виготовлення GNU не вказує, як можна обробляти цей випадок.
Запуск одного і того ж коду двічі та генерування лише одного результату не викликає сумнівів, оскільки для обчислення потрібен час (подумайте: години). Виведення лише одного файлу також було б досить складно, тому що часто він використовується як вхід до GNUPLOT, який не знає, як обробляти лише частину файлу даних.