/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
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應