Я хотел бы автоматизировать создание и запуск генератора кода, который выводит DLL, в следующие два шага:
- Пользователь пишет обычные классы на C ++ и компилирует их с помощью библиотеки
main.cpp
(вроде как работает библиотека модульного тестирования Catch).Путь установки библиотеки содержит это значение main.cpp
, и я бы предпочел, чтобы пользователям не приходилось ссылаться на него напрямую (шумно). - Затем пользователь запускает полученный исполняемый файл несколько раз, один раз для «конфигурации», каждый изкоторый испускает
.obj
.Наконец, эти .obj
файлы связаны вместе, чтобы сформировать окончательный .dll
.
В командной строке это может выглядеть примерно (примерно):
# this command might link to one set of dependencies
cl gen1.cpp gen2.cpp gen3.cpp %LIBROOT%\main.cpp /link [...] /out:generator.exe
# run the generator and get object files
generator.exe %CONFIG1% /out:config1.out
generator.exe %CONFIG2% /out:config2.out
# link the objects together with a potentially different set of dependencies
link config1.out config2.out [...] /DLL /out:project.dll
Какя могу автоматизировать это в MSBuild?Должен ли я создать собственный тип проекта?Могу ли я повторно использовать некоторые (или большинство) из существующих целей C ++?В идеале я хотел бы просто включить пользовательский файл целей, попросить пользователя указать необходимые метаданные в свойствах и позволить системе сборки выяснить все остальное.