Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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#includes
fájlokat.pch
,.ifc
fájlokat és így tovább, míg/sourceDependencies:directives [file1]
a megadott forrásfájlt, valamint az összesimport
jelentést ésexport
utasítást beolvassa./sourceDependencies
a .-val/sourceDependencies:directives
haszná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 stdout
a 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 /sourceDependencies
a 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)