GNU Make – параллельная компиляция

11 Июня 2013 К комментариям

После обновления процессора встал вопрос о максимальном его использовании при сборке проектов, точнее как реализовать компиляцию исходников в нескольких потоках.

Напомню я использую IDE Eclipse + GNU Make.

В GNU Make реализован механизм параллельной сборки, достаточно указать ключ –J и количество потоков или не указывать, тогда будет выбрано оптимальное значение (читать).

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

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

Пример:

all: clean config sperator 
@make -s -j job_bootloader
@make -s -j job_main

job_bootloader: bootloader.elf

job_main: main.elf

Получим следующий порядок выполнения:

  1. clean – один поток
  2. config – один поток
  3. separator – один поток
  4. (job_bootloader, job_main) – многопоточная обработка

В результате сейчас мой проект собирается за 1,5 секунды вместо изначальных 12 Улыбка.


Categories: Полезняшки Tags: GNU Make

comments powered by Disqus