psilogic: (Default)
psilogic ([personal profile] psilogic) wrote2009-06-17 07:33 pm

Параллельная компиляция

Как сделать параллельную компиляцию C++ проекта в Visual Studio Express Edition 2008?

XP, Core 2 Duo. Про параметр "maximum number of parallel project builds" в опциях знаю. Не дает эффекта :(

Знаю только метод при помощи cook-а, но это геморрой.

[identity profile] waqur.livejournal.com 2009-06-17 04:32 pm (UTC)(link)
Скрипт сам написал. Они похожи на bat-файлы, но намного гибче и выразительнее. Написав пару вспомогательных функций, на них можно писать хорошие build-скрипты, довольно понятные и простые в поддержке, и притом мощно распараллеливаемые.


Вспомогательные функции называются

Schedule_CompileFile
Schedule_CompileDirectory
Schedule_Assemble_Bin16
Schedule_Assemble
Schedule_MakeLibrary
Schedule_LinkExeFile
Schedule_LinkDllFile
Schedule_Run

они принимают номер группы (об этом ниже) и другие аргументы.

вспомогательная функция ExecuteAll запускает последовательную сборку всех групп
(она вызывается в конце скрипта, после всех Schedule_*)

все задания одной группы исполняются одновременно (точнее, ещё во время работы Schedule_* они последовательно раскладываются по стопкам, а ExecuteAll сохраняет скрипт-файл для каждой стопки заданий и запускает все эти подскрипты одновременно).

[identity profile] psilogic.livejournal.com 2009-06-17 04:43 pm (UTC)(link)
Уже по количеству вспомогательных функций я догадываюсь, что скриптик непростой :)