現在のコンパイルに対して既存の IFC (.ifc) を使用するようにコンパイラに指示します。
構文
/referencemodule-name=filename
/referencefilename
引数
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 は、有効なプライマリ モジュール インターフェイス ユニット名か、完全なモジュール パーティション名である必要があります。 プライマリ モジュール インターフェイス名の例を次に示します。
MM.N.OMyModulemy_module
完全なモジュール パーティション名の例を次に示します。
M:PM.N.O:P.QMyModule:Algorithmsmy_module:algorithms
モジュール参照が module-name を使用して作成された場合は、コンパイラでその名前のインポートが検出されても、コマンド ライン上の他のモジュールは検索されません。 たとえば、次のコマンド ラインを指定したとします。
cl ... /std:c++latest /reference m.ifc /reference m=n.ifc
上の例では、コンパイラが import m; を認識した場合、m.ifc の検索は行われません。
例
次の表に示す 3 つのモジュールがあるとします。
| モジュール | 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 (ヘッダー ユニットの作成)