MS Visual C 2015 Update 1
implements the Modules proposal.
以下是它的工作原理示例:
资料来源:
// 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 ./
那么,问题是:如何在CMake中使用模块的VC实现?
没有必要使用MSBuild后端,Ninja也没关系.
解决方法
我认为目前没有人为C模块做过任何构建系统工作.我们(微软)可能会首先支持MSBuild,但CMake肯定是可能的.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。