当与运行GNU-make规则-jN
化妆创建jobserver跨submakes管理岗位数。另外,您可以通过在前缀前面添加“-将Jobserver环境”传递给make配方,+
例如:
target :
+./some/complex/call/to/another/make target
现在,我有了一个(python)脚本,而不是子make,它运行一些复杂的打包操作(make太复杂了)。它可以执行的动作之一实际上可以产生一个make
命令。
package.stamp : $(DEPS)
+./packaging.py $(ARGS)
touch $@
现在,在package.py中调用该make命令时
make[1]: warning: jobserver unavailable: using -j1. Add `+' to parent make rule.
这是有道理的,因为任何环境都是由make设置的,可能不会被python认可或传递。
是否可以jobserver
通过python程序将引用传递给子make-如果可以,如何进行?
作业服务器必须保留两个方面:第一个是实际的环境变量,它利用make向子make发送选项。该值已正确保留,否则make甚至不会知道它应该寻找作业服务器,并且您不会看到该警告消息。
第二个方面是两个打开的文件描述符,这些描述符传递给make的子代。您的脚本必须保留这两个描述符,并在调用子make时将其保持打开状态。
您不会向我们展示正在使用什么Python代码来调用子make。默认情况下,该subprocess
模块将不会关闭文件描述符,但可以提供close_fds=True
有它这样做......你应该选择不,如果你想并行make调用到正常工作与jobserver使用此选项。
如果您不使用subprocess
,那么您必须向我们展示您在做什么。
您可能应该用python
标签标记它,因为它主要是一个Python问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句