ฉันกำลังพยายามทำสิ่งต่อไปนี้ มีโปรแกรมหนึ่งเรียกมัน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 ซึ่งไม่ทราบวิธีจัดการไฟล์ข้อมูลเพียงเศษเสี้ยว