Я пытаюсь сделать следующее. Есть программа, назовите ее 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 make не указано, как этот случай может быть обработан.
Выполнить один и тот же код дважды и получить только один результат не может быть и речи, потому что вычисление требует времени (подумайте: часы). Вывод только одного файла также был бы довольно трудным, потому что часто он используется как вход для GNUPLOT, который не знает, как обрабатывать только часть файла данных.