/sourceDependencies:directives
(Lista zależności modułu i jednostki nagłówka)
Ta opcja wiersza polecenia skanuje pliki źródłowe i ich #include
instrukcje w celu wygenerowania pliku JSON zawierającego listę eksportu i importu modułu. Te informacje mogą być używane przez system kompilacji w celu określenia kolejności kompilacji modułów i jednostek nagłówka.
Ta opcja różni się od /sourceDependencies
następujących sposobów:
- Kompilator nie generuje skompilowanych danych wyjściowych. Nie utworzono skompilowanego kodu, modułów ani jednostek nagłówka. Zamiast tego pliki są skanowane pod kątem dyrektyw modułu.
- Format JSON różni się od tego, co
/sourceDependencies
generuje. Opcja jest przeznaczona/sourceDependencies
do użycia z innymi narzędziami kompilacji, takimi jak CMake. - Wyjściowy plik JSON nie wyświetla listy zaimportowanych modułów i zaimportowanych jednostek nagłówka (
.ifc
plików), ponieważ ta opcja wykonuje skanowanie plików projektu, a nie kompilację. Nie ma więc wbudowanych modułów ani jednostek nagłówka do wyświetlenia. - Wyświetlane są tylko bezpośrednio zaimportowane moduły lub jednostki nagłówka. Nie wyświetla on samych zależności zaimportowanych modułów ani jednostek nagłówka.
- Zależności pliku nagłówka nie są wyświetlane. Oznacza to,
#include <file>
że zależności#include "file"
nie są wymienione na liście. /sourceDependencies:directives
jest przeznaczony do użycia przed.ifc
skompilowania plików./sourceDependencies
powoduje, że kompilator zgłasza wszystkie pliki, takie jak#includes
, pliki,.ifc
pliki itd., które były używane do konkretnej jednostki tłumaczenia, podczas gdy/sourceDependencies:directives [file1]
skanuje określony plik źródłowy i zgłasza wszystkie instrukcjeimport
iexport
.pch
./sourceDependencies
może być używany z/sourceDependencies:directives
.
Składnia
/sourceDependencies:directives-
/sourceDependencies:directives
Pod nazwą
/sourceDependencies:directives
katalog
Argumenty
-
Jeśli zostanie podana pojedyncza kreska, kompilator wyemituje kod JSON zależności źródłowych do stdout
, lub do miejsca przekierowania danych wyjściowych kompilatora.
filename
Kompilator zapisuje dane wyjściowe zależności źródłowej do określonej nazwy pliku, która może zawierać ścieżkę względną lub bezwzględną. Plik zostanie utworzony, jeśli nie istnieje.
directory
Jeśli argument jest katalogiem, kompilator generuje pliki zależności źródłowych w określonym katalogu. Katalog musi istnieć lub argument jest traktowany filename
jako . Nazwa pliku wyjściowego jest oparta na pełnej nazwie pliku wejściowego z dołączonym .json
rozszerzeniem. Jeśli na przykład plik podany w kompilatorze to main.cpp
, wygenerowana nazwa pliku wyjściowego to main.cpp.json
.
Uwagi
/sourceDependencies:directives
Program jest dostępny od wersji 16.10 programu Visual Studio 2019.
Po określeniu opcji kompilatora (kompilacja /MP
z wieloma procesami) zalecamy użycie argumentu /sourceDependencies:directives
katalogu. Ta opcja sprawia, że kompilator generuje oddzielny *.module.json
plik dla każdego pliku źródłowego. Jeśli podasz jeden argument nazwy pliku, dwa wystąpienia kompilatora mogą próbować otworzyć plik wyjściowy jednocześnie i spowodować błąd. Użyj polecenia z /sourceDependencies:directives-
, /MP
aby wysłać dane wyjściowe, aby spowodować stdout
przeplatane wyniki.
Gdy wystąpi błąd kompilatora niekrytycznego, informacje o zależności nadal są zapisywane w pliku wyjściowym.
Wszystkie ścieżki plików są wyświetlane jako ścieżki bezwzględne w danych wyjściowych.
Tego przełącznika można używać z /translateInclude
.
Przykłady
Biorąc pod uwagę następujący przykładowy kod:
//main.cpp:
#include <vector>
import m;
import std.core;
import <utility>;
import "t.h";
int main() {}
Ten następujący wiersz polecenia:
cl /std:c++latest /translateInclude /sourceDependencies:directives output.json main.cpp
tworzy plik output.json
JSON podobny do następującego:
{
"Version":"1.1",
"Data":{
"Source":"C:\\a\\b\\main.cpp",
"ProvidedModule":"",
"ImportedModules":[
"m",
"std.core"
],
"ImportedHeaderUnits":[
"C:\\...\\utility",
"C:\\a\\b\\t.h"
]
}
}
W przypadku zwięzłości w poprzednim przykładzie użyto ...
metody , aby skrócić zgłoszone ścieżki. Raport zawiera ścieżki bezwzględne. Zgłoszone ścieżki zależą od tego, gdzie kompilator znajduje zależności. Jeśli wyniki są nieoczekiwane, warto sprawdzić ustawienia ścieżki dołączania projektu.
ProvidedModule
Wyświetla listę wyeksportowanych nazw partycji modułu lub modułu.
Żadne pliki nie .ifc
są wyświetlane w danych wyjściowych, ponieważ nie zostały skompilowane. W przeciwieństwie do /sourceDependencies
programu kompilator nie generuje skompilowanych danych wyjściowych, gdy /sourceDependencies:directives
jest określony, więc nie są generowane skompilowane moduły ani jednostki nagłówka.
Aby ustawić tę opcję kompilatora w programie Visual Studio
Zwykle nie należy ustawiać tej opcji samodzielnie w środowisku programistycznym programu Visual Studio. Jest on ustawiany przez system kompilacji.
Zobacz też
/translateInclude
Dokumentacja header-units.json języka C++
Opcje kompilatora MSVC
Składnia wiersza polecenia kompilatora MSVC
/scanDependencies
(Wyświetlanie listy zależności modułów w postaci standardowej)
/sourceDependencies
(Wyświetl listę wszystkich zależności na poziomie źródła)