Sdílet prostřednictvím


/sourceDependencies:directives (Výpis závislostí jednotek a modulů hlaviček)

Tato možnost příkazového řádku prohledá zdrojové soubory a jejich #include příkazy a vygeneruje soubor JSON se seznamem exportu a importu modulu. Tyto informace může systém sestavení použít k určení pořadí sestavení modulů a jednotek hlaviček.

Tato možnost se liší od /sourceDependencies následujících způsobů:

  • Kompilátor nevygeneruje zkompilovaný výstup. Neprodukují se žádné kompilované kódy, moduly ani jednotky hlaviček. Místo toho se prohledají direktivy modulu.
  • Formát JSON se liší od toho, co /sourceDependencies vytváří. Tato /sourceDependencies možnost je určená k použití s jinými nástroji sestavení, jako je CMake.
  • Výstupní soubor JSON nevypisuje importované moduly a importované jednotky hlaviček (.ifc soubory), protože tato možnost provede kontrolu souborů projektu, nikoli kompilace. Proto nejsou k dispozici žádné sestavené moduly ani jednotky hlaviček, které by bylo potřeba vypsat.
  • Jsou uvedeny pouze přímo importované moduly nebo jednotky hlaviček. Nevypisuje závislosti importovaných modulů ani samotných jednotek hlaviček.
  • Závislosti souboru hlaviček nejsou uvedené. To znamená, #include <file> že nejsou #include "file" uvedené závislosti.
  • /sourceDependencies:directives je určen k použití před .ifc sestavením souborů.
  • /sourceDependencies způsobí, že kompilátor nahlásí všechny soubory, jako #includesjsou soubory .pch , .ifc soubory, soubory atd., které byly použity pro určitou jednotku překladu, zatímco /sourceDependencies:directives [file1] prohledá zadaný zdrojový soubor a hlásí všechny import příkazy export . /sourceDependencies lze použít s /sourceDependencies:directives.

Syntaxe

/sourceDependencies:directives-
/sourceDependencies:directivesjméno souboru
/sourceDependencies:directivesadresář

Argumenty

-
Pokud je k dispozici jednomlčka, kompilátor vygeneruje zdrojové závislosti JSON do stdoutumístění přesměrování výstupu kompilátoru.

filename
Kompilátor zapíše výstup zdrojové závislosti do zadaného názvu souboru, který může obsahovat relativní nebo absolutní cestu. Pokud soubor neexistuje, je vytvořen.

directory
Pokud je argument adresářem, kompilátor vygeneruje zdrojové soubory závislostí v zadaném adresáři. Adresář musí existovat nebo je argument považován za filename. Název výstupního souboru je založený na úplném názvu vstupního souboru s připojenou .json příponou. Pokud je například soubor poskytnutý kompilátoru main.cpp, vygenerovaný výstupní název souboru je main.cpp.json.

Poznámky

/sourceDependencies:directives je k dispozici od sady Visual Studio 2019 verze 16.10.

Při zadávání možnosti kompilátoru /MP (Sestavení s více procesy) doporučujeme použít /sourceDependencies:directives s argumentem adresáře. Tato možnost vytvoří výstup kompilátoru jako samostatný *.module.json soubor pro každý zdrojový soubor. Pokud zadáte jeden argument názvu souboru, mohou se dvě instance kompilátoru pokusit otevřít výstupní soubor současně a způsobit chybu. /MP /sourceDependencies:directives- Použití příkazu k odeslání výstupu stdout může způsobit prokládání výsledků.

Pokud dojde k chybě nevýkonného kompilátoru, informace o závislostech se stále zapíšou do výstupního souboru.

Všechny cesty k souborům se ve výstupu zobrazují jako absolutní cesty.

Tento přepínač lze použít s /translateInclude.

Příklady

Při použití následujícího vzorového kódu:

//main.cpp:
#include <vector>

import m;
import std.core;

import <utility>;

import "t.h";

int main() {}

Tento příkazový řádek:

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

vytvoří soubor output.json JSON podobný následujícímu:

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

V případě stručnosti se předchozí příklad používá ... ke zkrácení ohlášených cest. Sestava obsahuje absolutní cesty. Ohlášené cesty závisí na tom, kde kompilátor najde závislosti. Pokud jsou výsledky neočekávané, můžete zkontrolovat nastavení cesty zahrnutí projektu.

ProvidedModule vypíše exportované názvy oddílů modulu nebo modulů.

Ve výstupu nejsou uvedené žádné .ifc soubory, protože nebyly sestaveny. Na rozdíl od /sourceDependenciestoho kompilátor při zadání nevygeneruje zkompilovaný výstup /sourceDependencies:directives , takže se nevygenerují žádné kompilované moduly ani jednotky hlaviček.

Nastavení této možnosti kompilátoru v sadě Visual Studio

Tuto možnost byste normálně neměli nastavit sami ve vývojovém prostředí sady Visual Studio. Nastavuje ho systém sestavení.

Viz také

/translateInclude
Referenční informace k header-units.json jazyka C++
Možnosti kompilátoru MSVC
Syntaxe příkazového řádku kompilátoru MSVC
/scanDependencies (Výpis závislostí modulů ve standardním formátu)
/sourceDependencies (Výpis všech závislostí na úrovni zdroje)