Megosztás a következőn keresztül:


/sourceDependencies:directives (Modul- és fejlécegység-függőségek listázása)

Ez a parancssori beállítás megvizsgálja a forrásfájlokat és azok #include utasításait, hogy létrehozzon egy JSON-fájlt, amely felsorolja a modul exportálását és importálását. A buildrendszer ezeket az információkat felhasználhatja a modulok és fejlécegységek buildelési sorrendjének meghatározására.

Ez a beállítás a következő módokon /sourceDependencies tér el:

  • A fordító nem állít elő lefordított kimenetet. A rendszer nem állít elő lefordított kódot, modulokat vagy fejlécegységeket. Ehelyett a rendszer beolvasja a fájlokat a modulirányelvekbe.
  • A JSON formátuma eltér az eredménytől /sourceDependencies . Ez /sourceDependencies a lehetőség más buildelési eszközökkel, például a CMake-sel is használható.
  • A kimeneti JSON-fájl nem sorolja fel az importált modulokat és importált fejlécegységeket (.ifc fájlokat), mert ez a beállítás nem fordítást, hanem a projektfájlokat vizsgálja. Ezért nincsenek felsorolandó beépített modulok vagy fejlécegységek.
  • Csak a közvetlenül importált modulok vagy fejlécegységek szerepelnek a listában. Nem sorolja fel az importált modulok vagy fejlécegységek függőségeit.
  • A fejlécfájl-függőségek nincsenek felsorolva. Vagyis a #include <file>#include "file" függőségek nem szerepelnek a listában.
  • /sourceDependencies:directives a fájlok elkészítése előtt .ifc kell használni.
  • /sourceDependencies a fordító az adott fordítási egységhez használt összes fájlt, például #includesfájlokat .pch , .ifc fájlokat és így tovább, míg /sourceDependencies:directives [file1] a megadott forrásfájlt, valamint az összes import jelentést és export utasítást beolvassa. /sourceDependencies a .-val /sourceDependencies:directiveshasználható.

Szemantika

/sourceDependencies:directives-
/sourceDependencies:directives fájlnév
/sourceDependencies:directives címtár

Érvek

-
Ha az egyetlen kötőjel van megadva, akkor a fordító kibocsátja a forrásfüggőségeket, amelyekbe stdouta JSON-t átirányítja a fordító kimenete.

filename
A fordító a forrásfüggőség kimenetét a megadott fájlnévre írja, amely relatív vagy abszolút elérési utat is tartalmazhat. A fájl akkor jön létre, ha nem létezik.

directory
Ha az argumentum könyvtár, a fordító forrásfüggőség-fájlokat hoz létre a megadott könyvtárban. A könyvtárnak léteznie kell, vagy az argumentumot a rendszer egy .filename A kimeneti fájl neve a bemeneti fájl teljes nevén alapul, hozzáfűzött .json kiterjesztéssel. Ha például a fordítónak megadott fájl az main.cpp, akkor a létrehozott kimeneti fájlnév .main.cpp.json

Megjegyzések

/sourceDependencies:directives a Visual Studio 2019 16.10-es verziójától kezdve érhető el.

Ha megadja a /MP (Több folyamattal rendelkező build) fordítóbeállítást, javasoljuk, hogy használjon /sourceDependencies:directives könyvtárargumentumot. Ezzel a beállítással a fordító kimenete minden forrásfájlhoz külön *.module.json fájl lesz. Ha egyetlen fájlnév argumentumot ad meg, a fordító két példánya megpróbálhatja egyszerre megnyitni a kimeneti fájlt, és hibát okozhat. /MP A "with" /sourceDependencies:directives- használata a kimenet elküldéséhez, amely stdout egymást keresztező eredményeket okozhat.

Nem végzetes fordítóhiba esetén a függőségi adatok továbbra is a kimeneti fájlba lesznek beírva.

Az összes fájl elérési útja abszolút elérési útként jelenik meg a kimenetben.

Ez a kapcsoló használható a /translateInclude.

Példák

A következő mintakód alapján:

//main.cpp:
#include <vector>

import m;
import std;
import <utility>;
import "t.h";

int main() {}

Ez a következő parancssor:

cl /std:c++latest /translateInclude /sourceDependencies:directives output.json main.cpp

A következőhöz hasonló JSON-fájlt output.json hoz létre:

{
   "Version":"1.1",
   "Data":{
      "Source":"C:\\test\\main.cpp",
      "ProvidedModule":"",
      "ImportedModules":[
         "m",
         "std"
      ],
      "ImportedHeaderUnits":[
         "C:\\...\\utility",
         "C:\\...\\vector",
         "C:\\test\\t.h"
      ]
   }
}

A rövidítés kedvéért az előző példa a jelentett útvonalak rövidítésére használja ... . A jelentés az abszolút elérési utakat tartalmazza. A jelentett útvonalak attól függenek, hogy a fordító hol találja meg a függőségeket. Ha az eredmények váratlanok, érdemes lehet ellenőrizni a projekt elérési útvonalának beállításait.

ProvidedModule az exportált modul- vagy modulpartíciók neveit sorolja fel.

A kimenetben nem .ifc szerepelnek fájlok, mert nem lettek létrehozva. A fordítótól eltérően /sourceDependenciesa fordító nem állít elő lefordított kimenetet, ha /sourceDependencies:directives meg van adva, így nem készül lefordított modul vagy fejlécegység.

A fordító beállításának beállítása a Visual Studióban

Ezt a beállítást általában nem szabad beállítania a Visual Studio fejlesztői környezetében. A buildrendszer beállítja.

Lásd még

A C++ standard kódtár importálása modulok használatával
/translateInclude
C++ header-units.json referencia
MSVC-fordító beállításai
MSVC fordító parancssori szintaxisa
/scanDependencies (Modulfüggőségek listázása standard formában)
/sourceDependencies (Az összes forrásszintű függőség listázása)