/sourceDependencies (Wyświetl listę wszystkich zależności na poziomie źródła)

Ten przełącznik wiersza polecenia generuje plik JSON, który zawiera szczegółowe informacje o zależnościach na poziomie źródłowym użytych podczas kompilacji. Plik JSON zawiera listę zależności źródłowych, które obejmują:

  • Pliki nagłówka. Zarówno bezpośrednio dołączone, jak i lista nagłówków uwzględnionych w tych nagłówkach.
  • Użyta funkcja PCH (jeśli /Yu jest określona).
  • Nazwy zaimportowanych modułów
  • Ścieżki i nazwy plików zarówno bezpośrednio zaimportowanych jednostek nagłówka, jak i modułów i jednostek nagłówka importowane z kolei.

Ta opcja zawiera informacje niezbędne do kompilowania modułów i jednostek nagłówka w odpowiedniej kolejności zależności.

Składnia

/sourceDependencies-
/sourceDependenciesPod nazwą
/sourceDependenciesKatalogu

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 filenamejako . 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

Opcja kompilatora /sourceDependencies jest dostępna od wersji 16.7 programu Visual Studio 2019. Nie jest ona domyślnie włączona.

Po określeniu opcji kompilatora (kompilacja /MP z wieloma procesami) zalecamy użycie /sourceDependencies argumentu katalogu. 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- , /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.

Przykłady

Biorąc pod uwagę następujący przykładowy kod:

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

Możesz użyć /sourceDependencies z pozostałymi opcjami kompilatora:

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

gdzie ... reprezentuje inne opcje kompilatora. Ten wiersz polecenia tworzy plik output.json JSON z zawartością, taką jak:

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

Użyliśmy ... skrótu zgłoszonych ścieżek. 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.

Aby ustawić tę opcję kompilatora w środowisku programowania Visual Studio

Zwykle nie należy ustawiać tej opcji samodzielnie w środowisku programistycznym programu Visual Studio. Jest on ustawiany przez system kompilacji.

Zobacz też

Opcje kompilatora MSVC
Składnia wiersza polecenia kompilatora MSVC
/scanDependencies
/sourceDependencies:directives