共用方式為


/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