GNU Make – параллельная компиляция
После обновления процессора встал вопрос о максимальном его использовании при сборке проектов, точнее как реализовать компиляцию исходников в нескольких потоках.
Напомню я использую IDE Eclipse + GNU Make.
В GNU Make реализован механизм параллельной сборки, достаточно указать ключ –J и количество потоков или не указывать, тогда будет выбрано оптимальное значение (читать).
Однако как задавать последовательность сборки различных целей я не нашел и в результате цели выполняются в произвольном порядке, что естественно приводит к ошибкам.
Я пока решил эту проблему выделением целей, для которых возможна параллельная сборка, в отдельные цели.
Пример:
Получим следующий порядок выполнения:
- clean – один поток
- config – один поток
- separator – один поток
- (job_bootloader, job_main) – многопоточная обработка
В результате сейчас мой проект собирается за 1,5 секунды вместо изначальных 12 .
comments powered by Disqus