Próbuję wykonać następujące czynności. Istnieje program, nazwij go foo-bin
, który pobiera pojedynczy plik wejściowy i generuje dwa pliki wyjściowe. Głupia reguła Makefile byłaby następująca:
file-a.out file-b.out: input.in
foo-bin input.in file-a.out file-b.out
Nie oznacza to jednak make
w żaden sposób, że oba cele zostaną wygenerowane jednocześnie. Jest to dobre, gdy działa make
w trybie seryjnym, ale prawdopodobnie spowoduje problemy, jeśli spróbujesz make -j16
lub coś równie szalonego.
Pytanie brzmi, czy istnieje sposób na napisanie właściwej reguły Makefile dla takiego przypadku? Oczywiście wygenerowałoby to DAG, ale w jakiś sposób podręcznik GNU make nie precyzuje, jak można by obsłużyć ten przypadek.
Uruchomienie tego samego kodu dwa razy i wygenerowanie tylko jednego wyniku nie wchodzi w grę, ponieważ obliczenia wymagają czasu (pomyśl: godziny). Wyprowadzenie tylko jednego pliku również byłoby raczej trudne, ponieważ często jest on używany jako dane wejściowe do GNUPLOT, który nie wie, jak obsłużyć tylko ułamek pliku danych.