Есть ли способ узнать, что makefile выполняется с -j (параллельное выполнение)

#makefile #parallel-processing #gnu-make

#makefile #параллельная обработка #gnu-make

Вопрос:

-j Опция GNU Make удобна, хотя вы должны быть осторожны с вашими зависимостями. В моей среде это ускорило время сборки и тестирования в 5-6 раз. Но я хочу запускать свои тесты с покрытием, и это создает проблему, поскольку gcov инструментарий плохо обрабатывает параллелизм, в основном пытаясь одновременно записывать в один и тот же .gcda файл.

Я выяснил, как распределить информацию о покрытии по отдельным каталогам для каждого теста, который работает. Однако это влечет за собой штраф за последующую обработку всей информации о покрытии.

Итак, я ищу способ узнать, был ли -j использован при вызове, чтобы иметь возможность автоматически избегать дополнительной обработки, если в этом нет необходимости. Возможно ли это?

Комментарии:

1. По умолчанию вы должны иметь доступ к параметрам, используемым для вызова make через MAKEFLAGS , который существует, по сути, для того, чтобы узнать, как make был вызван, и разрешить их распространение в подпроцессы создания.

2. Гаах, конечно! Спасибо. Сделайте это ответом, и я приму его.

Ответ №1:

По умолчанию вы должны иметь доступ к параметрам, используемым для вызова make через MAKEFLAGS , который настраивается автоматически и, по сути, позволяет узнать, как был вызван make, и разрешить их распространение в процессе (ах) под-make.