在Makefile中隐式线程化的命令?

时间:2010-06-16 13:59:41

标签: multithreading makefile

我有一个“超级”makefile,它启动两个“sub”make文件:

libwebcam:         @echo -e“\ n调用libwebcam make。”         $(MAKE)-C $(TOPDIR)/ libwebcam

uvcdynctrl:         @echo -e“\ n调用uvcdynctrl make。”         $(MAKE)-C $(TOPDIR)/ uvcdynctrl

uvcdynctrl使用libwebcam ...我注意到这两个版本是由make作为单独的线程启动的!因此,有时在uvcdynctrl开始构建时lib不可用,并且我得到错误。默认情况下,make不应该以线程的形式启动命令,因为这只能通过-j(作业数)来使用,并且根据make手册,默认情况下没有线程。我在Ubuntu上运行它。

有人面临同样的问题吗?

Apple92

2 个答案:

答案 0 :(得分:0)

除非在顶层调用中指定要生成的-j参数,否则不应同时构建它们。如果您这样做,那么您需要正确设置依赖关系以注意uvcdynctrl依赖于libwebcam。

答案 1 :(得分:0)

我不知道为什么你的命令被线程化,但线程不是问题,依赖是。如果您正确设置了依赖项,则不会出现此错误,如果不正确,则可能会显示,线程或没有线程。

在uvcdynctrl makefile中,使libwebcam成为uvcdynctrl的先决条件,并加入制作libwebcam的规则。

相关问题