/reference
(使用命名模块 IFC)
命令编译器使用现有的 IFC (.ifc
) 进行当前编译。
语法
/reference
module-name=filename
/reference
filename
参数
filename
包含 IFC 数据的文件的名称,它是预构建的模块信息。 若要导入多个模块,请为每个文件包括一个单独的 /reference
选项。
module-name
导出的主模块接口单元名称或完整模块分区名称的有效名称。
备注
在大多数情况下,无需指定此开关,因为项目系统会自动发现解决方案中的模块依赖项。
/reference
编译器选项要求你启用 /std:c++20
或更高版本的编译器选项(例如 /std:c++latest
)。 从 Visual Studio 2019 版本 16.10 开始,/reference
选项可用。
如果 /reference
参数是不带 module-name
的 filename
,则系统会在运行时打开文件以验证 filename
参数名称是否为特定导入。 在具有许多 /reference
参数的方案中,可能会导致运行时性能变慢。
module-name
必须是有效的主模块接口单元名称或完整的模块分区名称。 主模块接口名称的示例包括:
M
M.N.O
MyModule
my_module
完整模块分区名称的示例包括:
M:P
M.N.O:P.Q
MyModule:Algorithms
my_module:algorithms
若使用 module-name
创建模块引用,则在编译器遇到该名称的导入的情况下,不会搜索命令行上的其他模块。 例如,假设如下命令行:
cl ... /std:c++latest /reference m.ifc /reference m=n.ifc
在上述情况下,如果编译器看到 import m;
,则 m.ifc
不会进行搜索。
示例
鉴于此表中列出的三个模块:
模块 | IFC 文件 |
---|---|
M |
m.ifc |
M:Part1 |
m-part1.ifc |
Core.Networking |
Networking.ifc |
使用 filename
参数的参考选项如下所示:
cl ... /std:c++latest /reference m.ifc /reference m-part.ifc /reference Networking.ifc
使用 module-name=filename
的参考选项如下所示:
cl ... /std:c++latest /reference m=m.ifc /reference M:Part1=m-part.ifc /reference Core.Networking=Networking.ifc
另请参阅
/scanDependencies
(以标准形式列出模块依赖项)
/sourceDependencies:directives
(列出模块和标头单位依赖项)
/headerUnit
(使用标头单元 IFC)
/exportHeader
(创建标头单元)