/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 の検索は行われません。

次の表に示す 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 (ヘッダー ユニットの作成)