我正在尝试做以下事情。有一个名为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的输入,后者不知道如何处理仅有部分数据文件的情况。
:
更改为&:
即可。有关更多详细信息,请参见下面的答案。 - jonas-schulze