/reference
(Используйте именованный модуль IFC)
Указывает компилятору использовать существующий IFC (.ifc
) для текущей компиляции.
Синтаксис
/reference
module-name=filename
/reference
filename
Аргументы
filename
Имя файла, содержащего данные IFC, предварительно созданные сведения о модуле. Чтобы импортировать несколько модулей, включите отдельный /reference
параметр для каждого файла.
module-name
Допустимое имя экспортированного имени блока основного интерфейса модуля или полного имени секции модуля.
Замечания
В большинстве случаев этот параметр не требуется указывать, так как система проектов автоматически обнаруживает зависимости модулей в решении.
Параметр /reference
компилятора требует включения /std:c++20
или более поздней версии параметра компилятора (например /std:c++latest
). Этот /reference
параметр доступен начиная с Visual Studio 2019 версии 16.10.
/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
(список зависимостей в header-unit и модулях)
/headerUnit
(использование IFC для единицы заголовка)
/exportHeader
(создание единиц заголовков)