/sourceDependencies
(Перечисление всех зависимостей уровня источника)
Этот параметр командной строки создает JSON-файл, который содержит сведения о зависимостях исходного уровня, потребляемых во время компиляции. JSON-файл содержит список исходных зависимостей, которые включают:
- Файлы заголовков. Как непосредственно включены, так и список заголовков, включенных этими заголовками.
- Используемый PCH (если
/Yu
задан). - Имена импортированных модулей
- Пути к файлам и имена как непосредственно импортированных единиц заголовков, так и модулей и блоков заголовков, которые они импортируют.
Этот параметр предоставляет сведения, необходимые для создания модулей и блоков заголовков в соответствующем порядке зависимостей.
Синтаксис
/sourceDependencies-
/sourceDependencies
имя_файла
/sourceDependencies
каталог
Аргументы
-
Если задано однотирное тире, компилятор выдает исходные зависимости JSON stdout
в или в место перенаправления выходных данных компилятора.
filename
Компилятор записывает выходные данные зависимостей источника в указанное имя файла, которое может включать относительный или абсолютный путь. Если файл не существует, он создается.
directory
Если аргумент является каталогом, компилятор создает исходные файлы зависимостей в указанном каталоге. Каталог должен существовать, или аргумент рассматривается как .filename
Имя выходного файла основано на полном имени входного файла с добавленным .json
расширением. Например, если файл, предоставленный компилятору, имеется main.cpp
имя созданного выходного файла main.cpp.json
.
Замечания
Параметр /sourceDependencies
компилятора доступен начиная с Visual Studio 2019 версии 16.7. По умолчанию она отключена.
При указании /MP
параметра компилятора (сборка с несколькими процессами) рекомендуется использовать /sourceDependencies
с аргументом каталога. Если указать один аргумент имени файла, два экземпляра компилятора могут одновременно попытаться открыть выходной файл и вызвать ошибку. Использование с /sourceDependencies-
отправкой выходных /MP
данных, чтобы привести к stdout
переключениям результатов.
При возникновении ошибки компилятора, неустранимая, сведения о зависимости по-прежнему записываются в выходной файл.
Все пути к файлам отображаются как абсолютные пути в выходных данных.
Примеры
Учитывая следующий пример кода:
// ModuleE.ixx:
export module ModuleE;
import ModuleC;
import ModuleD;
import <iostream>;
Можно использовать /sourceDependencies
с остальными параметрами компилятора:
cl ... /sourceDependencies output.json ... main.cpp
где ...
представляет другие параметры компилятора. Эта командная строка создает JSON-файл output.json
с таким содержимым, как:
{
"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"
}
]
}
}
Мы использовали для ...
сокращения сообщаемых путей. Отчет содержит абсолютные пути. Пути, сообщаемые в зависимости от того, где компилятор находит зависимости. Если результаты непредвиденно, может потребоваться проверить параметры пути проекта.
ProvidedModule
перечисляет экспортированные имена модулей или секций модуля.
Установка данного параметра компилятора в среде разработки Visual Studio
Обычно этот параметр не следует задавать самостоятельно в среде разработки Visual Studio. Он устанавливается системой сборки.
См. также
Параметры компилятора MSVC
Синтаксис командной строки компилятора MSVC
/scanDependencies
/sourceDependencies:directives