/sourceDependencies (すべてのソース レベルの依存関係を一覧表示する)

このコマンドライン スイッチを使用すると、コンパイル中に使用されるソースレベルの依存関係の詳細を示す JSON ファイルが生成されます。 JSON ファイルには、次のようなソースの依存関係の一覧が含まれています。

  • ヘッダー ファイル。 直接追加されたものと、それらのヘッダーによって追加されたヘッダーの一覧の両方があります。
  • 使用される PCH (/Yu が指定されている場合)。
  • インポートされたモジュールの名前
  • 直接インポートされたヘッダー ユニットと、それらがインポートするモジュールとヘッダー ユニットの両方のファイル パスと名前。

このオプションは、モジュールとヘッダー ユニットを適切な依存関係の順序でビルドするために必要な情報を提供します。

構文

/sourceDependencies-
/sourceDependenciesfilename
/sourceDependenciesdirectory

引数

-
単一ダッシュが指定されている場合、コンパイラはソース依存関係 JSON を stdout出力します。また、コンパイラの出力がリダイレクトされる場所にも出力されます。

filename
コンパイラでは、ソース依存関係の出力を指定したファイル名に書き込みます。これには相対パスまたは絶対パスが含まれる場合があります。 ファイルが存在しない場合は作成されます。

directory
引数がディレクトリの場合、コンパイラでは指定したディレクトリにソース依存関係ファイルを生成します。 ディレクトリが存在する必要があります。または、引数が .filename 出力ファイル名は入力ファイルの完全名をベースとし、.json 拡張子が付加されます。 たとえば、コンパイラに指定されるファイルが main.cpp の場合、生成される出力ファイル名は main.cpp.json です。

解説

/sourceDependencies コンパイラ オプションは、Visual Studio 2019 バージョン 16.7 以降で使用できます。 これは、既定では有効になっていません。

/MP (複数のプロセスを使用したビルド) コンパイラ オプションを指定する際には、/sourceDependencies をディレクトリ引数と一緒に使用することをお勧めします。 1 つの filename 引数を指定した場合、コンパイラの 2 つのインスタンスで出力ファイルを同時に開こうとし、エラーが発生する可能性があります。 with を/MP/sourceDependencies-使用して出力を送信すると、stdoutインターリーブ結果が発生する可能性があります。

致命的でないコンパイラ エラーが発生した場合でも、依存関係情報は出力ファイルに書き込まれます。

出力には、すべてのファイル パスが絶対パスとして表示されます。

次のサンプル コードがあるとします。

// ModuleE.ixx:
export module ModuleE;
import ModuleC;
import ModuleD;
import <iostream>;

/sourceDependencies を残りのコンパイラ オプションと共に使用できます。

cl ... /sourceDependencies output.json ... main.cpp

ここで、... はその他のコンパイラ オプションを表します。 このコマンド ラインでは、次のような内容の JSON ファイル output.json を生成します。

{
    "Version": "1.2",
    "Data": {
        "Source": "F:\\Sample\\myproject\\modulee.ixx",
        "ProvidedModule": "ModuleE",
        "Includes": [],
        "ImportedModules": [
            {
                "Name": "ModuleC",
                "BMI": "F:\\Sample\\Outputs\\Intermediate\\MyProject\\x64\\Debug\\ModuleC.ixx.ifc"
            },
            {
                "Name": "ModuleB",
                "BMI": "F:\\Sample\\Outputs\\Intermediate\\ModuleB\\x64\\Debug\\ModuleB.ixx.ifc"
            },
            {
                "Name": "ModuleD",
                "BMI": "F:\\Sample\\Outputs\\Intermediate\\MyProject\\x64\\Debug\\ModuleD.cppm.ifc"
            }
        ],
        "ImportedHeaderUnits": [
            {
                "Header": "f:\\visual studio 16 main\\vc\\tools\\msvc\\14.29.30030\\include\\iostream",
                "BMI": "F:\\Sample\\Outputs\\Intermediate\\HeaderUnits\\x64\\Debug\\iostream_W4L4JYGFJ3GL8OG9.ifc"
            }
        ]
    }
}

報告されたパスを省略するために ... を使用しました。 レポートには絶対パスが含まれます。 報告されるパスは、コンパイラで依存関係が見つかる場所によって変わります。 予期しない結果である場合は、プロジェクトのインクルード パスの設定を確認することをお勧めします。

ProvidedModule を指定すると、エクスポートされたモジュールまたはモジュール パーティションの名前の一覧が表示されます。

Visual Studio 開発環境でこのコンパイラ オプションを設定するには

通常、Visual Studio 開発環境では、このオプションを自分で設定しないでください。 これはビルド システムによって設定されます。

関連項目

MSVC コンパイラ オプション
MSVC コンパイラのコマンド ライン構文
/scanDependencies
/sourceDependencies:directives