Aby*_*byx 7 c++ cmake visual-c++ c++-modules
MS Visual C++ 2015 Update 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(); } |
Run Code Online (Sandbox Code Playgroud)
构建命令:
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
Run Code Online (Sandbox Code Playgroud)
依赖图:
c.ixx ? GM.ifc ? b.ixx ? FM.ifc ? a.cpp
? ? ?
c.obj b.obj a.obj
? ? ?
a.exe
Run Code Online (Sandbox Code Playgroud)
每个模块都有一个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 ./
Run Code Online (Sandbox Code Playgroud)
所以,问题是:如何在CMake中使用模块的VC++实现?
没有必要使用MSBuild后端,Ninja也没关系.
| 归档时间: |
|
| 查看次数: |
745 次 |
| 最近记录: |