我需要找到一种避免并行进行子调用的方法,并避免收到警告: make [1]:警告:-jN在子make中被强制:禁用作业服务器模式。
我确实有几个并行运行的make调用,因为主要的make调用运行时标记为-jN
,且N> 1
我收到上面列出的警告,并且可以看到Makefile并引起调用。
但是,我尝试使用gnu / make文档中提供的几个选项,但仍然无法发出警告。
a)
+make -C $FOO $@
b)
make MAKEFLAGS= -C $FOO $@
c)
make -j1 -C $FOO $@
d)
.NOTPARALLEL:bar
我需要在没有警告的情况下运行整个编译过程(因为它们被视为错误)。 但是上述警告继续出现。
答案 0 :(得分:0)
警告来自被调用的make,因为它正在通过MAKEFLAGS
获取某些与作业服务器相关的标志。
为了展示这一点,我们可以像这样简单地调用make
来重现错误消息:
make --jobserver-fds=3,4 -j1
make: warning: -jN forced in submake: disabling jobserver mode.
... other errors about those being bad file descriptors ...
在MAKEFLAGS
命令行中覆盖make
并没有执行此操作,因为在从make
收到MAKEFLAGS
后,被调用的env
对此进行了解释。父母。但是我们可以通过外部实用程序yourtarget: yourprereq
env MAKEFLAGS= make -j1 -C $FOO $@
拦截父级的环境变量:
env
借助make
,我们可以完全控制嵌套final QImageCapture imageCapture =
new QImageCapture("imageCapture");
final MorphiaQuery<ImageCapture> query =
new MorphiaQuery<>(morphia,datastore,imageCapture);
query.where(imageCapture.id.in(ids)).
set(imageCapture.deleted, TRUE);
所看到的环境变量。