syncProj – утилита для генерации Visual Studio C++ проектов.
Привет. Хочу поделится опытом написания генератора проектов для Visual Studio.
В общем до данного момента я сам активно применял premake5 — да и в принципе по прежнему его променяю, но все-таки периодически натыкался на не-состыковки и прямые баги в premake5. Чинить premake5 особо энтузиазма не вызывало, т.к. premake5 базируется на скриптовом языке Lua, а это очередной язык программирования со своими замашками и приколами. В нашей фирме преобладают C++ и C#, я подумал почему бы не попробовать что-то новое и сделать его лаконично и опрятно.
В какой-то момент я экспериментировал с C# и знал, что C# можно скомпилировать и запустить на манер скрипта без особых заморочек – ну и подумал что буду генерировать C++ проект через C# скрипт.
Сначала разкопал Solution (.sln) file format, затем и C++ project file format (.vcxproj) – в принципе ничего особенного в них не было, просто данные. Microsoft наверное официально нигде не публиковал данные file formatы, пришлось частично искать информацию, частично самому reverse engineeriть.
Надо было набросать какую то классовую модель .vcxproj проектов – и сама модель на данный момент очень близка к .vcxproj, не самая оптимальная модель, зато проще подгрузить и Solution и Projectы – все грузится полу-мануально, и частично через C# reflection.
Читать полностью »