/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-namefilename,则系统会在运行时打开文件以验证 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(创建标头单元)