/sourceDependencies
(Listar todas as dependências de nível de origem)
Essa opção de linha de comando gera um arquivo JSON que detalha as dependências de nível de origem consumidas durante a compilação. O arquivo JSON contém uma lista das dependências de origem, que incluem:
- Arquivos de cabeçalho. Incluídos diretamente e a lista de cabeçalhos incluídos por esses cabeçalhos.
- O PCH usado (se
/Yu
for especificado). - Nomes de módulos importados
- Caminhos de arquivo e nomes de unidades de cabeçalho importadas diretamente e dos módulos e unidades de cabeçalho que eles importam por sua vez.
Essa opção fornece informações necessárias para compilar módulos e unidades de cabeçalho na ordem de dependência adequada.
Sintaxe
/sourceDependencies-
/sourceDependencies
filename
/sourceDependencies
diretório
Argumentos
-
Se for fornecido o traço único, o compilador emitirá as dependências de origem de JSON para stdout
, ou, para onde for redirecionada a saída do compilador.
filename
O compilador grava a saída de dependência de origem no nome de arquivo especificado, que pode incluir um caminho relativo ou absoluto. Se ainda não existir, o arquivo será criado.
directory
Se o argumento for um diretório, o compilador gerará arquivos de dependência de origem no diretório especificado. O diretório tem que existir ou o argumento será tratado como um filename
. O nome do arquivo de saída é baseado no nome completo do arquivo de entrada, com uma extensão .json
acrescentada. Por exemplo, se o arquivo fornecido ao compilador for main.cpp
, o nome do arquivo de saída gerado será main.cpp.json
.
Comentários
A opção do compilador /sourceDependencies
está disponível a partir do Visual Studio 2019 versão 16.7. Ela não vem habilitada por padrão.
Ao especificar a opção do compilador /MP
(Compilar com vários processos), recomendamos que você use /sourceDependencies
com um argumento de diretório. Se você fornecer um argumento de nome de arquivo único, duas instâncias do compilador poderão tentar abrir o arquivo de saída simultaneamente e causar um erro. O uso de /MP
com /sourceDependencies-
para enviar saída para stdout
pode causar resultados intercalados.
Quando ocorre um erro não fatal do compilador, as informações de dependência ainda são gravadas no arquivo de saída.
Todos os caminhos de arquivo aparecem como caminhos absolutos na saída.
Exemplos
Dado o seguinte exemplo de código:
// ModuleE.ixx:
export module ModuleE;
import ModuleC;
import ModuleD;
import <iostream>;
Você pode usar /sourceDependencies
com o restante das opções do compilador:
cl ... /sourceDependencies output.json ... main.cpp
onde ...
representa as outras opções do compilador. Essa linha de comando produz um arquivo JSON output.json
com conteúdo semelhante a:
{
"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"
}
]
}
}
Costumávamos usar ...
para abreviar os caminhos relatados. O relatório contém os caminhos absolutos. Os caminhos relatados dependem de onde o compilador encontra as dependências. Se os resultados forem inesperados, talvez você queira verificar as configurações de caminho de inclusão do projeto.
ProvidedModule
lista os nomes de partição de módulo ou módulo exportados.
Para definir esta opção do compilador no ambiente de desenvolvimento do Visual Studio
Normalmente, você não deve definir essa opção no ambiente de desenvolvimento do Visual Studio. Ela é definida pelo sistema de build.
Confira também
Opções do compilador MSVC
Sintaxe da linha de comando do compilador MSVC
/scanDependencies
/sourceDependencies:directives