Partager via


/sourceDependencies (Répertorier toutes les dépendances au niveau source)

Ce commutateur de ligne de commande génère un fichier JSON qui détaille les dépendances au niveau source consommées pendant la compilation. Le fichier JSON contient une liste des dépendances sources, notamment :

  • Fichiers d’en-tête. Les en-têtes sont directement inclus et la liste des en-têtes inclus par ces en-têtes.
  • Le PCH utilisé (s’il /Yu est spécifié).
  • Noms des modules importés
  • Chemins de fichier et noms des unités d’en-tête directement importées et des modules et unités d’en-tête qu’ils importent à leur tour.

Cette option fournit des informations nécessaires pour générer des modules et des unités d’en-tête dans l’ordre de dépendance approprié.

Syntaxe

/sourceDependencies-
/sourceDependencies filename
/sourceDependenciesrépertoire

Arguments

-
Si le tiret unique est fourni, le compilateur émet les dépendances sources JSON vers stdout, ou vers l’emplacement où la sortie du compilateur est redirigée.

filename
Le compilateur écrit la sortie de dépendance source dans le nom de fichier spécifié, qui peut inclure un chemin relatif ou absolu. Le fichier est créé s’il n’existe pas.

directory
Si l’argument est un répertoire, le compilateur génère des fichiers de dépendance source dans le répertoire spécifié. Le répertoire doit exister, ou l’argument est traité comme un filename. Le nom du fichier de sortie est basé sur le nom complet du fichier d’entrée, avec une extension ajoutée .json . Par exemple, si le fichier fourni au compilateur est main.cpp, le nom de fichier de sortie généré est main.cpp.json.

Notes

L’option /sourceDependencies du compilateur est disponible à partir de Visual Studio 2019 version 16.7. Elle n’est pas activée par défaut.

Lorsque vous spécifiez l’option de /MP compilateur (Générer avec plusieurs processus), nous vous recommandons d’utiliser /sourceDependencies avec un argument de répertoire. Si vous fournissez un seul argument de nom de fichier, deux instances du compilateur peuvent tenter d’ouvrir le fichier de sortie simultanément et provoquer une erreur. L’utilisation de l’option /MP avec /sourceDependencies- laquelle envoyer la sortie stdout peut entraîner des résultats entrelacés.

Lorsqu’une erreur de compilateur non irrécupérable se produit, les informations de dépendance sont toujours écrites dans le fichier de sortie.

Tous les chemins d’accès de fichier apparaissent sous forme de chemins absolus dans la sortie.

Exemples

Étant donné l’exemple de code suivant :

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

Vous pouvez utiliser /sourceDependencies avec les autres options de votre compilateur :

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

... représente vos autres options de compilateur. Cette ligne de commande produit un fichier output.json JSON avec du contenu tel que :

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

Nous avons utilisé ... pour abrégé les chemins signalés. Le rapport contient les chemins absolus. Les chemins signalés dépendent de l’emplacement où le compilateur trouve les dépendances. Si les résultats sont inattendus, vous pouvez vérifier les paramètres de chemin d’accès inclus de votre projet.

ProvidedModule répertorie les noms de partition de module ou de module exportés.

Pour définir cette option du compilateur dans l'environnement de développement Visual Studio

Vous ne devez normalement pas définir cette option vous-même dans l’environnement de développement Visual Studio. Il est défini par le système de build.

Voir aussi

Options du compilateur MSVC
Syntaxe de ligne de commande du compilateur MSVC
/scanDependencies
/sourceDependencies:directives