当我有一个需要在另一个目标之前制作特定目标的制作任务时,在并行模式下,使用 SunPro Make (dmake) 时这很简单。以下生成文件:
install: dir dir/file
dir:
mkdir dir
dir/file:
cp source dir/file
可以通过将第一行更改为:
install: dir .WAIT dir/file
或通过使用:
.NO_PARALLEL: install
makefile 的其余部分仍将在并行模式下处理,即使是左侧或右侧目标的列表.WAIT
也将以并行模式处理。
请参阅:http ://schilytools.sourceforge.net/man/man1/make.1s.html和http://schilytools.sourceforge.net/man/man1/dmake.1.html
但 GNU make 似乎没有类似的选项。用 GNU make 真的没有办法做到这一点吗?
更具体地说,解决方案需要以允许使用其他 make 实现处理 makefile 的方式编写。
特殊目标 .WAIT 可以在一个依赖于 make 程序的宏中,例如 $(WAIT)
请注意,有一个明显的解决方案没有帮助:
从理论上讲,可以dir
依赖. dir/file
_ 结果,多次调用将一次又一次地复制到,而没有预期的结果,只有在源变得更新的情况下才进行复制dir
dir/file,
dir,
dir
dir/file
make
dir/file
make
dir/file.
这提出了另一个问题,是否可能存在强制在复制到之前make
创建而不依赖于dir
dir/file
dir
dir/file.