Как я могу автоматизировать двухэтапную генерацию кода в MSBuild? - PullRequest
0 голосов
/ 28 января 2019

Я хотел бы автоматизировать создание и запуск генератора кода, который выводит DLL, в следующие два шага:

  1. Пользователь пишет обычные классы на C ++ и компилирует их с помощью библиотеки main.cpp (вроде как работает библиотека модульного тестирования Catch).Путь установки библиотеки содержит это значение main.cpp, и я бы предпочел, чтобы пользователям не приходилось ссылаться на него напрямую (шумно).
  2. Затем пользователь запускает полученный исполняемый файл несколько раз, один раз для «конфигурации», каждый изкоторый испускает .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 ++?В идеале я хотел бы просто включить пользовательский файл целей, попросить пользователя указать необходимые метаданные в свойствах и позволить системе сборки выяснить все остальное.

...