/sourceDependencies
(列出所有來源層級相依性)
這個命令行參數會產生 JSON 檔案,詳細說明編譯期間所耗用的來源層級相依性。 JSON 檔案包含來源相依性的清單,其中包括:
- 頭檔。 這兩者都直接包含,以及這些標頭所包含的標頭清單。
- 使用的 PCH (如果
/Yu
已指定的話)。 - 匯入模組的名稱
- 直接匯入標頭單位和模組和標頭單位的檔案路徑和名稱會接著匯入。
此選項提供以適當相依性順序建置模組和標頭單位所需的資訊。
語法
/sourceDependencies-
/sourceDependencies
檔案名稱
/sourceDependencies
目錄
引數
-
如果提供單一破折號,則編譯程式會將來源相依性 JSON 發出至 stdout
,或重新導向編譯程序輸出的位置。
filename
編譯程式會將來源相依性輸出寫入指定的檔名,其中可能包含相對或絕對路徑。 如果檔案不存在,就會建立檔案。
directory
如果自變數是目錄,編譯程式會在指定的目錄中產生來源相依性檔案。 目錄必須存在,否則自變數會 filename
被視為 。 輸出檔名是以輸入檔的完整名稱為基礎,擴展名為附加 .json
。 例如,如果提供給編譯程式的檔案是 main.cpp
,產生的輸出檔名是 main.cpp.json
。
備註
從 Visual Studio 2019 16.7 版開始,即可使用編譯 /sourceDependencies
程序選項。 依預設未啟用。
當您指定 /MP
[使用多個進程建置] 編譯程式選項時,建議您搭配目錄自變數使用 /sourceDependencies
。 如果您提供單一檔名自變數,編譯程式的兩個實例可能會嘗試同時開啟輸出檔案,並造成錯誤。 使用搭配 /MP
/sourceDependencies-
將輸出傳送至 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"
}
]
}
}
我們已用來 ...
縮寫報告的路徑。 報表包含絕對路徑。 報告的路徑取決於編譯程式找到相依性的位置。 如果結果非預期,您可能會想要檢查專案的 Include 路徑設定。
ProvidedModule
列出導出的模組或模組數據分割名稱。
在 Visual Studio 開發環境中設定這個編譯器選項
您通常不應該在 Visual Studio 開發環境中自行設定此選項。 它是由建置系統所設定。
另請參閱
MSVC 編譯器選項
MSVC 編譯器命令列語法
/scanDependencies
/sourceDependencies:directives