/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#includes
jsou 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šechnyimport
příkazyexport
./sourceDependencies
lze použít s/sourceDependencies:directives
.
Syntaxe
/sourceDependencies:directives-
/sourceDependencies:directives
jméno souboru
/sourceDependencies:directives
adresář
Argumenty
-
Pokud je k dispozici jednomlčka, kompilátor vygeneruje zdrojové závislosti JSON do stdout
umí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 /sourceDependencies
toho 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)