четверг, 26 декабря 2013 г.

[prog] Mxx_ru 1.6.2 и одна дикая идея на счет систем сборки С/C++ проектов

На днях сделал релиз Mxx_ru 1.6.2 с поддержкой нового тулсета: vc12 (это компилятор из состава MSVS 2013). Загрузить новую версию можно посредством RubyGems:

Для новой инсталляции:
gem install Mxx_ru

Для обновления уже установленной версии:
gem update Mxx_ru

Либо же можно скачать gem-файл с RubyForge, а затем установить Gem локально:
gem install Mxx_ru-1.6.2.gem

Проект Mxx_ru жив, в смысле постоянно и активно используется. На его развитие, правда, сил уже не остается, все время отнимает SObjectizer.

Но вот размышляя о том, куда можно было бы двигать Mxx_ru будь такая возможность, пришла в голову забавная и дикая идея. Навеяна она новой make-подобной системой сборки Ninja. Ее разработали в Google при работе над Chrome и ее целью является максимальная скорость обработки make-правил. При этом правила для ninja не пишутся вручную, а генерируются автоматом из других, более высокоуровневых систем описания проектов, вроде GYP или CMake.

Так вот моя идея состоит в том, чтобы из описанных в Mxx_ru правил строился C++код для управления компиляцией проекта. Этот C++код компилируется в exe-шник и именно этот exe-шник запускается и затем управляет всем процессом сборки. Выигрыш здесь в том, что если проекты модифицируются не часто (а именно так в большинстве случаев и происходит), то данный exe-шник будет компилироваться лишь эпизодически. А в большинстве случаев будет достигается скорость анализа зависимостей, недостижимая для инструментов вроде Mxx_ru и SCons.

Над реализацией этого дела я пока не думал. Вероятно, тут есть свои подводные камни. Но, если когда-нибудь дело дойдет до Mxx-2.0, нужно будет достать эту идею из запасников :)

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