Как вручную создать компонент среды выполнения Windows с помощью C ++ / WinRT?

Я пытаюсь понять это, чтобы запустить проект с помощью CMake.

Скажем, у меня есть следующий файл IDL:

namespace HelloWorld{
  [default_interface]
  runtimeclass HelloWorld
  {
    HelloWorld();
    String SayHello(String name);
  }
}

Какие шаги требуются в командной строке для создания компонента среды выполнения Windows, который я могу использовать?

Я пытаюсь понять это, чтобы запустить проект с помощью CMake.


person mohamedmoussa    schedule 08.01.2020    source источник
comment
Это вовлечено. См. этот вопрос и ответ, чтобы начать работу.   -  person IInspectable    schedule 08.01.2020
comment
Спасибо за это. Я совершенно сбит с толку, поскольку не уверен, как cppwinrt связано со всем этим. Файл HelloWorld.h, созданный midl, совсем не похож на файлы заголовков, созданные с помощью расширения Visual Studio. Вы в конечном итоге заставили CMake работать для вашего проекта?   -  person mohamedmoussa    schedule 08.01.2020
comment
MIDL использует файлы IDL и создает необработанные структуры уровня ABI (плюс .winmd, если требуется). cppwinrt, с другой стороны, использует файлы .winmd и генерирует типы проецируемых (и реализации), как выражено C ++ / WinRT. У меня никогда не получалось, чтобы это работало с CMake. Это возможно, но это намного сложнее, чем просто заставить это скомпилировать в командной строке. По пути создается слишком много артефактов, о которых нужно сообщить CMake.   -  person IInspectable    schedule 08.01.2020
comment
Спасибо. Возможно, лучший вариант на данный момент - попробовать удалить требование CMake.   -  person mohamedmoussa    schedule 09.01.2020
comment
Если у вас есть время, чтобы продолжить это, вы можете найти следующее полезным: Чтобы лучше понять процесс MSBuild, вы можете попробовать запустить Средство просмотра журналов MSBuild. Это позволит вам просмотреть фактические выполняемые шаги сборки. Кроме того, C ++ / WinRT размещен на GitHub. cmd_reader кодирует часть логики для поиска SDK и Расположение .winmd.   -  person IInspectable    schedule 10.01.2020