Поделиться через


/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