Как использовать модули VC ++ в CMake

MS Visual C ++ 2015 обновление 1 реализует предложение модулей.

Вот пример того, как это работает:
Источники:

// c.ixx             |  // b.ixx                   |  // a.cpp
module GM;           |  import GM;                 |  import FM;
export void g() {}   |  module FM;                 |  int main() { f(); }
|  export void f() { g(); }   |

Команды сборки:

set CL=/EHsc /experimental:module   # Default flags for cl.exe
cl.exe /c c.ixx                     # Produces c.obj, GM.ifc
cl.exe /c b.ixx                     # Depends on GM.ifc, produces b.obj, FM.ifc
cl.exe /c a.cpp                     # Depends on FM.ifc, produces a.obj
link.exe a.obj b.obj c.obj          # Produces a.exe

График зависимости:

c.ixx → GM.ifc → b.ixx → FM.ifc → a.cpp
↘            ↓             ↙
c.obj     b.obj    a.obj
↘     ↓      ↙
a.exe

Каждый модуль имеет один file.ixx с его экспортом.
Этот файл будет скомпилирован в ModuleName.ifc а также file.obj,

Если файл импортирует модуль M, M.ifc файл должен присутствовать.
По умолчанию поиск в cl.exe .ifc файлы в текущем каталоге, но можно указать явные имена или путь поиска:

cl.exe /c a.cpp
-- or --
cl.exe /c a.cpp /module:reference FM.ifc
-- or --
cl.exe /c a.cpp /module:search ./

Итак, вопрос в следующем: Как использовать реализацию модулей VC ++ в CMake?
Нет необходимости использовать бэкэнд MSBuild, ниндзя тоже подойдет.

7

Решение

Я не верю, что кто-то делал какие-либо работы по сборке системы для модулей C ++. Вполне вероятно, что мы (Microsoft) сначала сделаем поддержку MSBuild, но CMake определенно возможен.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]