Saya mencoba melakukan hal berikut. Ada sebuah program, sebut saja foo-bin
, yang mengambil satu file masukan dan menghasilkan dua file keluaran. Aturan Makefile bodoh untuk ini adalah:
file-a.out file-b.out: input.in
foo-bin input.in file-a.out file-b.out
Namun, ini tidak menunjukkan make
dengan cara apa pun bahwa kedua target akan dibuat secara bersamaan. Tidak apa-apa saat dijalankan make
dalam serial, tetapi kemungkinan akan menyebabkan masalah jika seseorang mencoba make -j16
atau sesuatu yang sama gilanya.
Pertanyaannya adalah apakah ada cara untuk menulis aturan Makefile yang tepat untuk kasus seperti itu? Jelas, ini akan menghasilkan DAG, tetapi entah bagaimana panduan GNU make tidak menentukan bagaimana kasus ini dapat ditangani.
Menjalankan kode yang sama dua kali dan hanya menghasilkan satu hasil tidak mungkin dilakukan, karena penghitungannya membutuhkan waktu (pikirkan: jam). Mengeluarkan hanya satu file juga akan agak sulit, karena sering digunakan sebagai input ke GNUPLOT yang tidak tahu bagaimana menangani hanya sebagian kecil dari file data.