Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met deze opdrachtregeloptie scant u bronbestanden en de bijbehorende #include instructies om een JSON-bestand te genereren waarin de module wordt geëxporteerd en geïmporteerd. Een buildsysteem kan deze informatie gebruiken om de buildvolgorde van modules en header-eenheden te bepalen.
Deze optie verschilt van /sourceDependencies op de volgende manieren:
- De compiler produceert geen gecompileerde uitvoer. Er worden geen gecompileerde code, modules of header-eenheden geproduceerd. In plaats daarvan worden de bestanden gescand op modulerichtlijnen.
- De JSON-indeling verschilt van wat
/sourceDependenciesproduceert. De/sourceDependenciesoptie is bedoeld voor gebruik met andere buildhulpprogramma's, zoals CMake. - In het JSON-uitvoerbestand worden geen geïmporteerde modules en geïmporteerde headereenheden (
.ifcbestanden) vermeld omdat met deze optie een scan wordt uitgevoerd van de projectbestanden, niet van een compilatie. Er zijn dus geen ingebouwde modules of header-eenheden om weer te geven. - Alleen rechtstreeks geïmporteerde modules of kopteksteenheden worden weergegeven. De afhankelijkheden van de geïmporteerde modules of kopteksteenheden zelf worden niet weergegeven.
- Afhankelijkheden van headerbestanden worden niet vermeld. Dat wil gezegd,
#include <file>of#include "file"afhankelijkheden worden niet vermeld. -
/sourceDependencies:directivesis bedoeld om te worden gebruikt voordat.ifcbestanden worden gebouwd. -
/sourceDependencieszorgt ervoor dat de compiler alle bestanden rapporteert, zoals#includes.pchbestanden,.ifcbestanden, bestanden, enzovoort, die zijn gebruikt voor een bepaalde vertaaleenheid, terwijl/sourceDependencies:directives [file1]het opgegeven bronbestand en alleimportexportinstructies worden gescand./sourceDependencieskan worden gebruikt met/sourceDependencies:directives.
Syntaxis
/sourceDependencies:directives-
/sourceDependencies:directivesbestandsnaam
/sourceDependencies:directivesmap
Argumenten
-
Als er één streepje is opgegeven, verzendt de compiler de bronafhankelijkheden JSON naar stdoutof naar de locatie waar de compileruitvoer wordt omgeleid.
filename
De compiler schrijft de uitvoer van de bronafhankelijkheid naar de opgegeven bestandsnaam, die mogelijk een relatief of absoluut pad bevat. Het bestand wordt gemaakt als het niet bestaat.
directory
Als het argument een map is, genereert de compiler bronafhankelijkheidsbestanden in de opgegeven map. De map moet bestaan of het argument wordt behandeld als een filename. De naam van het uitvoerbestand is gebaseerd op de volledige naam van het invoerbestand, met een toegevoegde .json extensie. Als het bestand dat aan de compiler is verstrekt, bijvoorbeeld main.cpp, is de gegenereerde uitvoerbestandsnaam main.cpp.json.
Opmerkingen
/sourceDependencies:directives is beschikbaar vanaf Visual Studio 2019 versie 16.10.
Wanneer u de /MP compileroptie (Compileren met meerdere processen) opgeeft, wordt u aangeraden een mapargument te gebruiken /sourceDependencies:directives . Met deze optie maakt de compiler een afzonderlijk *.module.json bestand voor elk bronbestand. Als u één bestandsnaamargument opgeeft, kunnen twee exemplaren van de compiler proberen het uitvoerbestand tegelijkertijd te openen en een fout te veroorzaken. Het gebruik van /MP met /sourceDependencies:directives- om uitvoer te verzenden, stdout kan interleaved resultaten veroorzaken.
Wanneer er een niet-fatale compilerfout optreedt, wordt de afhankelijkheidsinformatie nog steeds naar het uitvoerbestand geschreven.
Alle bestandspaden worden weergegeven als absolute paden in de uitvoer.
Deze schakelaar kan worden gebruikt met /translateInclude.
Voorbeelden
Gegeven de volgende voorbeeldcode:
//main.cpp:
#include <vector>
import m;
import std;
import <utility>;
import "t.h";
int main() {}
Deze volgende opdrachtregel:
cl /std:c++latest /translateInclude /sourceDependencies:directives output.json main.cpp
produceert een JSON-bestand output.json dat vergelijkbaar is met:
{
"Version":"1.1",
"Data":{
"Source":"C:\\test\\main.cpp",
"ProvidedModule":"",
"ImportedModules":[
"m",
"std"
],
"ImportedHeaderUnits":[
"C:\\...\\utility",
"C:\\...\\vector",
"C:\\test\\t.h"
]
}
}
Voor kortheid gebruikt het vorige voorbeeld ... om de gerapporteerde paden te verkorten. Het rapport bevat de absolute paden. De gerapporteerde paden zijn afhankelijk van waar de compiler de afhankelijkheden vindt. Als de resultaten onverwacht zijn, kunt u de padinstellingen van uw project controleren.
ProvidedModule bevat geëxporteerde module- of modulepartitienamen.
Er worden geen .ifc bestanden weergegeven in de uitvoer omdat ze niet zijn gebouwd. In tegenstelling tot /sourceDependencies, produceert de compiler geen gecompileerde uitvoer wanneer /sourceDependencies:directives deze is opgegeven, dus er worden geen gecompileerde modules of header-eenheden geproduceerd.
Deze compileroptie instellen in Visual Studio
Normaal gesproken moet u deze optie niet zelf instellen in de Ontwikkelomgeving van Visual Studio. Het buildsysteem stelt het in.
Zie ook
De C++-standaardbibliotheek importeren met behulp van modules
/translateInclude
C++ header-units.json verwijzing
MSVC-compileropties
opdrachtregelsyntaxis van MSVC-compiler
/scanDependencies (Afhankelijkheden van lijstmodules in standaardvorm)
/sourceDependencies (Alle afhankelijkheden op bronniveau weergeven)