假设我有一个 Makefile:
a.out:
sleep 3
touch a.out a1
b.out:
cat a1 > b.out
c.out: a.out b.out
cat a.out b.out > c.out
make c.out
通常 会成功,因为 a.out 命令在 b.out 命令之前执行。但是 make b.out
会失败(在干净的目录中),make -j c.out
也会失败。
因为在现实生活中很少有 sleep 3
,因此错误只会非常随机地出现,我正在寻找一种方法来排除此类错误的可能性更高。一个想法是颠倒“同一级别”目标的执行顺序:由于测试套件通常会触发第一代 a.out,然后是 b.out,如果不是先生成 b.out,则错误将表面。
GNU make 有办法做到这一点吗?
最佳答案
Paul Smith 在 help-make@gnu.org 上回复这对于当前的 GNU make 是不可能的。
关于gnu-make - 通过更改执行顺序触发(并行)GNU make 中缺少的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9437459/