Предупреждение исходит от вызванного make, потому что он получает определенные связанные с сервером заданий флаги через MAKEFLAGS
.
Чтобы показать это, мы можем воспроизвести сообщение об ошибке в простом вызове make
, какthis:
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
.