/sourceDependencies:directives
(Перечисление зависимостей модуля и блока заголовка)
Этот параметр командной строки сканирует исходные файлы и их #include
инструкции, чтобы создать JSON-файл, который перечисляет экспорт модуля и импорт. Эти сведения можно использовать системой сборки для определения порядка сборки модулей и единиц заголовков.
Этот параметр отличается от /sourceDependencies
следующих способов:
- Компилятор не создает скомпилированные выходные данные. Не создаются скомпилированные коды, модули или блоки заголовков. Вместо этого файлы сканируются для директив модуля.
- Формат JSON отличается от того, что
/sourceDependencies
создает. Этот/sourceDependencies
параметр предназначен для использования с другими средствами сборки, такими как CMake. - Выходной JSON-файл не перечисляет импортированные модули и импортированные блоки заголовков (
.ifc
файлы), так как этот параметр выполняет сканирование файлов проекта, а не компиляцию. Поэтому в списке нет встроенных модулей или блоков заголовков. - Перечислены только импортированные модули или блоки заголовков. Он не перечисляет зависимости импортированных модулей или блоков заголовков.
- Зависимости файла заголовка не перечислены. То есть
#include <file>
#include "file"
или зависимости не перечислены. /sourceDependencies:directives
Предназначено для использования перед.ifc
созданием файлов./sourceDependencies
Компилятор отправляет отчет обо всех файлах, таких как#includes
.pch
файлы, файлы,.ifc
файлы и т. д., которые использовались для определенной единицы перевода, в то время/sourceDependencies:directives [file1]
как сканирует указанный исходный файл и сообщает всеimport
инструкции иexport
инструкции./sourceDependencies
можно использовать с/sourceDependencies:directives
.
Синтаксис
/sourceDependencies:directives-
/sourceDependencies:directives
имя_файла
/sourceDependencies:directives
каталог
Аргументы
-
Если задано однотирное тире, компилятор выдает исходные зависимости JSON stdout
в или в место перенаправления выходных данных компилятора.
filename
Компилятор записывает выходные данные зависимостей источника в указанное имя файла, которое может включать относительный или абсолютный путь. Если файл не существует, он создается.
directory
Если аргумент является каталогом, компилятор создает исходные файлы зависимостей в указанном каталоге. Каталог должен существовать, или аргумент рассматривается как .filename
Имя выходного файла основано на полном имени входного файла с добавленным .json
расширением. Например, если файл, предоставленный компилятору, имеется main.cpp
имя созданного выходного файла main.cpp.json
.
Замечания
/sourceDependencies:directives
доступна начиная с Visual Studio 2019 версии 16.10.
При указании /MP
параметра компилятора (сборка с несколькими процессами) рекомендуется использовать /sourceDependencies:directives
с аргументом каталога. Этот параметр позволяет компилятору выводить отдельный *.module.json
файл для каждого исходного файла. Если указать один аргумент имени файла, два экземпляра компилятора могут одновременно попытаться открыть выходной файл и вызвать ошибку. Использование с /sourceDependencies:directives-
отправкой выходных /MP
данных, чтобы привести к stdout
переключениям результатов.
При возникновении ошибки компилятора, неустранимая, сведения о зависимости по-прежнему записываются в выходной файл.
Все пути к файлам отображаются как абсолютные пути в выходных данных.
Этот параметр можно использовать с /translateInclude
.
Примеры
Учитывая следующий пример кода:
//main.cpp:
#include <vector>
import m;
import std.core;
import <utility>;
import "t.h";
int main() {}
Следующая командная строка:
cl /std:c++latest /translateInclude /sourceDependencies:directives output.json main.cpp
создает JSON-файл output.json
, аналогичный следующему:
{
"Version":"1.1",
"Data":{
"Source":"C:\\a\\b\\main.cpp",
"ProvidedModule":"",
"ImportedModules":[
"m",
"std.core"
],
"ImportedHeaderUnits":[
"C:\\...\\utility",
"C:\\a\\b\\t.h"
]
}
}
Для краткости предыдущий пример используется ...
для сокращения указанных путей. Отчет содержит абсолютные пути. Пути, сообщаемые в зависимости от того, где компилятор находит зависимости. Если результаты непредвиденно, может потребоваться проверить параметры пути проекта.
ProvidedModule
перечисляет экспортированные имена модулей или секций модуля.
В .ifc
выходных данных нет файлов, так как они не были созданы. В отличие /sourceDependencies
от того, компилятор не создает скомпилированные выходные данные при /sourceDependencies:directives
указании, поэтому не создаются скомпилированные модули или блоки заголовков.
Установка параметра компилятора в Visual Studio
Обычно этот параметр не следует задавать самостоятельно в среде разработки Visual Studio. Он устанавливается системой сборки.
См. также
/translateInclude
Справочник по header-units.json C++
Параметры компилятора MSVC
Синтаксис командной строки компилятора MSVC
/scanDependencies
(Перечисление зависимостей модуля в стандартной форме)
/sourceDependencies
(Перечисление всех зависимостей уровня источника)