Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Diese Befehlszeilenoption überprüft Quelldateien und deren #include Anweisungen, um eine JSON-Datei zu generieren, in der Modulexporte und -importe aufgelistet sind. Ein Buildsystem kann diese Informationen verwenden, um die Buildreihenfolge von Modulen und Headereinheiten zu bestimmen.
Diese Option unterscheidet sich von /sourceDependencies den folgenden Möglichkeiten:
- Der Compiler erzeugt keine kompilierte Ausgabe. Es werden keine kompilierten Code-, Modul- oder Headereinheiten erstellt. Stattdessen werden die Dateien nach Moduldirektiven gescannt.
- Das JSON-Format unterscheidet sich von dem, was
/sourceDependencieserzeugt wird. Die/sourceDependenciesOption soll mit anderen Buildtools wie Z. B. CMake verwendet werden. - Die JSON-Ausgabedatei listet keine importierten Module und importierten Headereinheiten (
.ifcDateien) auf, da diese Option eine Überprüfung der Projektdateien durchführt, keine Kompilierung. Es gibt also keine integrierten Module oder Kopfzeileneinheiten für die Liste. - Es werden nur direkt importierte Module oder Kopfzeileneinheiten aufgelistet. Es werden nicht die Abhängigkeiten der importierten Module oder Headereinheiten selbst aufgeführt.
- Headerdateiabhängigkeiten werden nicht aufgeführt. Das heißt,
#include <file>oder#include "file"Abhängigkeiten werden nicht aufgeführt. -
/sourceDependencies:directivessoll verwendet werden, bevor.ifcDateien erstellt werden. -
/sourceDependenciesbewirkt, dass der Compiler alle Dateien, z#includes. B. Dateien.pch,.ifcDateien usw., meldet, die für eine bestimmte Übersetzungseinheit verwendet wurden, während/sourceDependencies:directives [file1]die angegebene Quelldatei überprüft und alleimportundexportAnweisungen gemeldet wird./sourceDependencieskann mit/sourceDependencies:directives.
Syntax
/sourceDependencies:directives-
/sourceDependencies:directivesDateiname
/sourceDependencies:directivesverzeichnis
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
/sourceDependencies:directives ab Visual Studio 2019, Version 16.10, verfügbar.
Wenn Sie die /MP Compileroption (Build mit mehreren Prozessen) angeben, empfehlen wir die Verwendung /sourceDependencies:directives mit einem Verzeichnisargument. Mit dieser Option wird die Compilerausgabe zu einer separaten *.module.json Datei für jede Quelldatei. 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/MP" zum Senden der /sourceDependencies:directives- 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.
Dieser Schalter kann mit /translateInclude.
Beispiele
Im folgenden Beispielcode:
//main.cpp:
#include <vector>
import m;
import std;
import <utility>;
import "t.h";
int main() {}
Folgende Befehlszeile:
cl /std:c++latest /translateInclude /sourceDependencies:directives output.json main.cpp
erzeugt eine JSON-Datei output.json ähnlich wie:
{
"Version":"1.1",
"Data":{
"Source":"C:\\test\\main.cpp",
"ProvidedModule":"",
"ImportedModules":[
"m",
"std"
],
"ImportedHeaderUnits":[
"C:\\...\\utility",
"C:\\...\\vector",
"C:\\test\\t.h"
]
}
}
Aus Platzgründen wird ... im vorherigen Beispiel die gemeldeten Pfade 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.
In der Ausgabe sind keine .ifc Dateien aufgeführt, da sie nicht erstellt wurden. Im Gegensatz dazu /sourceDependencieserzeugt der Compiler keine kompilierte Ausgabe, wenn /sourceDependencies:directives angegeben wird, daher werden keine kompilierten Module oder Headereinheiten erstellt.
So legen Sie diese Compileroption in Visual Studio fest
Normalerweise sollten Sie diese Option nicht selbst in der Visual Studio-Entwicklungsumgebung festlegen. Das Buildsystem legt es fest.
Siehe auch
Importieren der C++-Standardbibliothek mithilfe von Modulen
/translateInclude
C++-header-units.json-Referenz
MSVC-Compileroptionen
Syntax für die MSVC-Compilerbefehlszeile
/scanDependencies (Listenmodulabhängigkeiten im Standardformular)
/sourceDependencies (Alle Abhängigkeiten auf Quellebene auflisten)