/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.
  • /sourceDependenciespowoduje, ż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 instrukcje import i export.pch . /sourceDependencies może być używany z /sourceDependencies:directives.

Składnia

/sourceDependencies:directives-
/sourceDependencies:directivesPod nazwą
/sourceDependencies:directivesKatalogu

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

/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 /sourceDependenciesprogramu 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 pliku 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)