我在make中的并行构建有问题,即有这个定义
rmlink:
$(RM) $(ALIB)
$(RM) $(BLIB)
$(RM) $(CLIB)
$(RM) $(DLIB)
$(RM) $(ELIB)
mklink:
ln -sf $(ALIB_WITHPATH) $(ALIB)
ln -sf $(BLIB_WITH_PATH) $(BLIB)
ln -sf $(CLIB_WITH_PATH) $(CLIB)
ln -sf $(DLIB_WITH_PATH) $(DLIB)
ln -sf $(E_LIB) $(ELIB)
并启动构建,make
我将构建这些目标
$ make
/bin/rm -f libA.so
/bin/rm -f libB.so
/bin/rm -f libC.so
/bin/rm -f libD.so
/bin/rm -f libE.so
ln -sf ../libA.so libA.so
ln -sf ../libB.so libB.so
ln -sf ../libC.so libC.so
ln -sf ../libD.so libD.so
ln -sf ../libE.so libE.so
make -j 2
但是使用(或更多)并行构建启动它我会得到:
$ make -j 2
/bin/rm -f libA.so
ln -sf ../libB.so libB.so
/bin/rm -f libB.so
/bin/rm -f libC.so
/bin/rm -f libD.so
ln -sf ../libD.so libD.so
/bin/rm -f libE.so
ln -sf ../libA.so libA.so
ln -sf ../libC.so libC.so
ln -sf ../libE.so libE.so
g++: libB.so: No such file or directory
在这种特殊情况下,它会删除我的链接libB.so
并且不会再次创建它 - 破坏有效的构建。
我该如何解决这个问题才能启动并行构建?
编辑
向目标添加这样的东西mklink
似乎可以解决这个问题:
mklink: rmlink
如果这是正确的方法,请发表评论。