Share via


/sourceDependencies (Alle Abhängigkeiten auf Quellebene auflisten)

Diese Befehlszeilenoption generiert eine JSON-Datei, in der die während der Kompilierung verbrauchten Abhängigkeiten auf Quellebene beschrieben werden. Die JSON-Datei enthält eine Liste der Quellabhängigkeiten, darunter:

  • Headerdateien. Sowohl direkt enthalten als auch die Liste der Kopfzeilen, die von diesen Kopfzeilen enthalten sind.
  • Der verwendete PCH (sofern /Yu angegeben).
  • Namen importierter Module
  • Dateipfade und Namen sowohl von direkt importierten Headereinheiten als auch von Modulen und Headereinheiten, die sie wiederum importieren.

Diese Option enthält Informationen, die zum Erstellen von Modulen und Headereinheiten in der richtigen Abhängigkeitsreihenfolge erforderlich sind.

Syntax

/sourceDependencies-
/sourceDependenciesfilename
/sourceDependenciesverzeichnis

Argumente

-
Wenn der einzelne Gedankenstrich bereitgestellt wird, gibt der Compiler die Quellabhängigkeiten JSON an stdoutoder an den Ort, an den die Compilerausgabe umgeleitet wird.

filename
Der Compiler schreibt die Quellabhängigkeitsausgabe in den angegebenen Dateinamen, der einen relativen oder absoluten Pfad enthalten kann. Wenn die Datei nicht vorhanden ist, wird sie erstellt.

directory
Wenn das Argument ein Verzeichnis ist, generiert der Compiler Quellabhängigkeitsdateien im angegebenen Verzeichnis. Das Verzeichnis muss vorhanden sein, oder das Argument wird als ein filename. Der Name der Ausgabedatei basiert auf dem vollständigen Namen der Eingabedatei mit einer angefügten .json Erweiterung. Wenn die dem Compiler bereitgestellte Datei beispielsweise lautet main.cpp, lautet main.cpp.jsonder generierte Ausgabedateiname .

Hinweise

Die /sourceDependencies Compileroption ist ab Visual Studio 2019, Version 16.7, verfügbar. Er ist nicht standardmäßig aktiviert.

Wenn Sie die /MP Compileroption (Build mit mehreren Prozessen) angeben, empfehlen wir die Verwendung /sourceDependencies mit einem Verzeichnisargument. Wenn Sie ein einzelnes Dateinamenargument angeben, versuchen zwei Instanzen des Compilers möglicherweise, die Ausgabedatei gleichzeitig zu öffnen und einen Fehler zu verursachen. Die Verwendung von "Mit/sourceDependencies-" zum Senden der /MP Ausgabe stdout kann zu überlappenden Ergebnissen führen.

Wenn ein nicht schwerwiegender Compilerfehler auftritt, werden die Abhängigkeitsinformationen weiterhin in die Ausgabedatei geschrieben.

Alle Dateipfade werden als absolute Pfade in der Ausgabe angezeigt.

Beispiele

Im folgenden Beispielcode:

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

Sie können die restlichen Compileroptionen verwenden /sourceDependencies :

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

wobei ... die anderen Compileroptionen dargestellt werden. Diese Befehlszeile erzeugt eine JSON-Datei output.json mit Inhalt wie:

{
    "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"
            }
        ]
    }
}

Wir haben die gemeldeten Pfade früher ... gekürzt. Der Bericht enthält die absoluten Pfade. Die gemeldeten Pfade hängen davon ab, wo der Compiler die Abhängigkeiten findet. Wenn die Ergebnisse unerwartet sind, sollten Sie die Pfadeinstellungen Ihres Projekts überprüfen.

ProvidedModule Liste exportierter Modul- oder Modulpartitionsnamen.

So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest

Normalerweise sollten Sie diese Option nicht selbst in der Visual Studio-Entwicklungsumgebung festlegen. Sie wird vom Buildsystem festgelegt.

Siehe auch

MSVC-Compileroptionen
MSVC-Compiler-Befehlszeilensyntax
/scanDependencies
/sourceDependencies:directives