/sourceDependencies
(Notificar dependencias de nivel de origen)
Este modificador de línea de comandos genera un archivo JSON que detalla las dependencias de nivel de origen usadas durante la compilación. El archivo JSON contiene una lista de las dependencias de origen, que incluyen:
- Archivos de encabezado. Tanto los incluidos directamente como la lista de encabezados incluidos por esos encabezados.
- PCH usado (si se especifica
/Yu
). - Nombres de módulos importados
- Rutas de acceso de archivo y nombres de las unidades de encabezado importadas directamente y de los módulos y las unidades de encabezado que a su vez importan.
Esta opción proporciona información necesaria para compilar módulos y unidades de encabezado en el orden de dependencia adecuado.
Sintaxis
/sourceDependencies-
/sourceDependencies
nombredearchivo
/sourceDependencies
directory
Argumentos
-
Si se proporciona el guión único, el compilador emite las dependencias de origen JSON hacia stdout
o hacia donde se redirija la salida del compilador.
filename
El compilador escribe la salida de la dependencia de origen en el nombre de archivo especificado, que puede incluir una ruta de acceso relativa o absoluta. Si el archivo no existe, se creará.
directory
Si el argumento es un directorio, el compilador genera archivos de dependencia de origen en el directorio especificado. El directorio debe existir. De lo contrario, el argumento se tratará como filename
. El nombre del archivo de salida se basa en el nombre completo del archivo de entrada, con una extensión .json
anexada. Por ejemplo, si el archivo proporcionado al compilador es main.cpp
, el nombre de archivo de salida generado será main.cpp.json
.
Comentarios
La opción del compilador /sourceDependencies
está disponible a partir de la versión 16.7 de Visual Studio 2019. que no está habilitado de manera predeterminada.
Al especificar la opción del compilador /MP
(Compilación con varios procesos), se recomienda usar /sourceDependencies
con un argumento de directorio. Si proporciona un único argumento de nombre de archivo, puede que dos instancias del compilador intenten abrir el archivo de salida simultáneamente y provoquen un error. El uso de /MP
con /sourceDependencies-
para enviar la salida a stdout
podría provocar resultados intercalados.
Cuando se produce un error del compilador no grave, la información de dependencia se sigue escribiendo en el archivo de salida.
Todas las rutas de acceso de archivo se muestran como rutas de acceso absolutas en la salida.
Ejemplos
Dado el código de ejemplo siguiente:
// ModuleE.ixx:
export module ModuleE;
import ModuleC;
import ModuleD;
import <iostream>;
Puede usar /sourceDependencies
con el resto de las opciones del compilador:
cl ... /sourceDependencies output.json ... main.cpp
donde ...
representa las demás opciones del compilador. Esta línea de comandos genera un archivo JSON output.json
con un contenido similar al siguiente:
{
"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"
}
]
}
}
Se ha usado ...
para abreviar las rutas de acceso notificadas. El informe contiene las rutas de acceso absolutas. Las rutas de acceso notificadas dependen de dónde encuentra el compilador las dependencias. Si los resultados son inesperados, quizás le interese comprobar la configuración de la ruta de acceso de inclusión del proyecto.
ProvidedModule
enumera los nombres del módulo exportado o la partición del módulo.
Para establecer esta opción del compilador en el entorno de desarrollo de Visual Studio
Normalmente, no debe establecer esta opción en el entorno de desarrollo de Visual Studio. La establece el sistema de compilación.
Consulte también
Opciones del compilador de MSVC
Sintaxis de línea de comandos del compilador de MSVC
/scanDependencies
/sourceDependencies:directives