Sdílet prostřednictvím


/sourceDependencies (Výpis všech závislostí na úrovni zdroje)

Tento přepínač příkazového řádku vygeneruje soubor JSON, který podrobně popisuje závislosti na úrovni zdroje spotřebované během kompilace. Soubor JSON obsahuje seznam zdrojových závislostí, mezi které patří:

  • Soubory hlaviček. Přímo zahrnuté i seznam hlaviček, které tato záhlaví obsahují.
  • Použitý PCH (pokud /Yu je zadaný).
  • Názvy importovaných modulů
  • Cesty k souborům a názvy přímo importovaných jednotek záhlaví i modulů a jednotek hlaviček, které importují.

Tato možnost poskytuje informace potřebné k sestavení modulů a jednotek hlaviček ve správném pořadí závislostí.

Syntaxe

/sourceDependencies-
/sourceDependenciesjméno souboru
/sourceDependenciesadresář

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

Možnost kompilátoru /sourceDependencies je dostupná od sady Visual Studio 2019 verze 16.7. Ve výchozím nastavení není povolená.

Při zadávání možnosti kompilátoru /MP (Sestavení s více procesy) doporučujeme použít /sourceDependencies s argumentem adresáře. 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- 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.

Příklady

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

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

Můžete použít /sourceDependencies se zbývajícími možnostmi kompilátoru:

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

kde ... představuje další možnosti kompilátoru. Tento příkazový řádek vytvoří soubor output.json JSON s obsahem, jako je:

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

Použili ... jsme zkratku 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ů.

Nastavení tohoto parametru kompilátoru ve vývojovém prostředí 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é

Možnosti kompilátoru MSVC
Syntaxe příkazového řádku kompilátoru MSVC
/scanDependencies
/sourceDependencies:directives