Dela via


/sourceDependencies:directives (Lista modul- och rubrikenhetsberoenden)

Det här kommandoradsalternativet söker igenom källfiler och deras #include instruktioner för att generera en JSON-fil som visar modulexport och -importer. Ett byggsystem kan använda den här informationen för att fastställa byggordningen för moduler och huvudenheter.

Det här alternativet skiljer sig från /sourceDependencies på följande sätt:

  • Kompilatorn producerar inte kompilerade utdata. Ingen kompilerad kod, moduler eller rubrikenheter skapas. I stället genomsöks filerna efter moduldirektiv.
  • JSON-formatet skiljer sig från det som /sourceDependencies producerar. Alternativet /sourceDependencies är avsett att användas med andra byggverktyg, till exempel CMake.
  • JSON-utdatafilen visar inte importerade moduler och importerade rubrikenheter (.ifc filer) eftersom det här alternativet gör en genomsökning av projektfilerna, inte en kompilering. Det finns därför inga inbyggda moduler eller rubrikenheter att lista.
  • Endast direktimporterade moduler eller rubrikenheter visas. Den visar inte beroenden för de importerade modulerna eller själva huvudenheterna.
  • Beroenden för rubrikfiler visas inte. Det vill: #include <file> eller #include "file" så visas inte beroenden.
  • /sourceDependencies:directives är tänkt att användas innan .ifc filer skapas.
  • /sourceDependenciesgör att kompilatorn rapporterar alla filer, till exempel #includes, filer, .pch filer och så vidare, som användes för en viss översättningsenhet, medan .ifc genomsöker den angivna källfilen och rapporterar alla /sourceDependencies:directives [file1] och import -instruktioner. export /sourceDependencies kan användas med /sourceDependencies:directives.

Syntax

/sourceDependencies:directives-
/sourceDependencies:directives filnamn
/sourceDependencies:directives katalog

Argumentpunkter

-
Om det enda strecket tillhandahålls genererar kompilatorn källberoendena JSON till stdouteller till där kompilatorns utdata omdirigeras.

filename
Kompilatorn skriver utdata från källberoendet till det angivna filnamnet, som kan innehålla en relativ eller absolut sökväg. Filen skapas om den inte finns.

directory
Om argumentet är en katalog genererar kompilatorn källberoendefiler i den angivna katalogen. Katalogen måste finnas eller så behandlas argumentet som en filename. Namnet på utdatafilen baseras på det fullständiga namnet på indatafilen med ett tillägg som läggs till .json . Om filen som tillhandahålls till kompilatorn till exempel är main.cppär main.cpp.jsondet genererade utdatafilnamnet .

Anmärkningar

/sourceDependencies:directives är tillgängligt från och med Visual Studio 2019 version 16.10.

När du anger kompilatoralternativet /MP (Skapa med flera processer) rekommenderar vi att du använder /sourceDependencies:directives med ett katalogargument. Det här alternativet gör att kompilatorn matar ut en separat *.module.json fil för varje källfil. Om du anger ett enda filnamnsargument kan två instanser av kompilatorn försöka öppna utdatafilen samtidigt och orsaka ett fel. Användning av /MP med /sourceDependencies:directives- för att skicka utdata till stdout kan orsaka interfolierade resultat.

När ett icke-allvarligt kompilatorfel inträffar skrivs beroendeinformationen fortfarande till utdatafilen.

Alla filsökvägar visas som absoluta sökvägar i utdata.

Den här växeln kan användas med /translateInclude.

Exempel

Med följande exempelkod:

//main.cpp:
#include <vector>

import m;
import std;
import <utility>;
import "t.h";

int main() {}

Följande kommandorad:

cl /std:c++latest /translateInclude /sourceDependencies:directives output.json main.cpp

skapar en JSON-fil output.json som liknar:

{
   "Version":"1.1",
   "Data":{
      "Source":"C:\\test\\main.cpp",
      "ProvidedModule":"",
      "ImportedModules":[
         "m",
         "std"
      ],
      "ImportedHeaderUnits":[
         "C:\\...\\utility",
         "C:\\...\\vector",
         "C:\\test\\t.h"
      ]
   }
}

I korthet används ... i föregående exempel för att förkorta de rapporterade sökvägarna. Rapporten innehåller de absoluta sökvägarna. De sökvägar som rapporteras beror på var kompilatorn hittar beroendena. Om resultatet är oväntat kanske du vill kontrollera projektets inställningar för inkluderad sökväg.

ProvidedModule listar exporterade modul- eller modulpartitionsnamn.

Inga .ifc filer visas i utdata eftersom de inte har skapats. Till skillnad från /sourceDependenciesproducerar kompilatorn inte kompilerade utdata när /sourceDependencies:directives den anges, så inga kompilerade moduler eller rubrikenheter skapas.

Ange det här kompilatoralternativet i Visual Studio

Du bör normalt inte ange det här alternativet själv i Visual Studio-utvecklingsmiljön. Byggsystemet ställer in det.

Se även

Importera C++-standardbiblioteket med hjälp av moduler
/translateInclude
Referens för C++ header-units.json
MSVC-kompilatoralternativ
kommandoradssyntax för MSVC-kompilatorn
/scanDependencies (Lista modulberoenden i standardformulär)
/sourceDependencies (Visa en lista över alla beroenden på källnivå)