Bagikan melalui


/sourceDependencies (Mencantumkan semua dependensi tingkat sumber)

Sakelar baris perintah ini menghasilkan file JSON yang merinci dependensi tingkat sumber yang digunakan selama kompilasi. File JSON berisi daftar dependensi sumber, yang meliputi:

  • File header. Baik yang disertakan secara langsung maupun daftar header yang disertakan oleh header tersebut.
  • PCH yang digunakan (jika /Yu ditentukan).
  • Nama modul yang diimpor
  • Jalur file dan nama unit header yang diimpor langsung dan modul dan unit header yang diimpor secara bergantian.

Opsi ini menyediakan informasi yang diperlukan untuk membangun modul dan unit header dalam urutan dependensi yang tepat.

Sintaks

/sourceDependencies-
/sourceDependenciesFilename
/sourceDependenciesdirektori

Argumen

-
Jika tanda hubung tunggal disediakan, pengkompilasi akan memancarkan dependensi sumber JSON ke stdout, atau ke tempat output kompilator dialihkan.

filename
Pengkompilasi menulis output dependensi sumber ke nama file yang ditentukan, yang mungkin menyertakan jalur relatif atau absolut. File dibuat jika tidak ada.

directory
Jika argumen adalah direktori, pengkompilasi menghasilkan file dependensi sumber di direktori yang ditentukan. Direktori harus ada, atau argumen diperlakukan sebagai filename. Nama file output didasarkan pada nama lengkap file input, dengan ekstensi yang ditambahkan .json . Misalnya, jika file yang disediakan untuk pengkompilasi adalah main.cpp, nama file output yang dihasilkan adalah main.cpp.json.

Keterangan

Opsi /sourceDependencies pengkompilasi tersedia mulai dari Visual Studio 2019 versi 16.7. Perlindungan pembersihan tidak diaktifkan secara default.

Saat Anda menentukan /MP opsi pengkompilasi (Build dengan beberapa proses), kami sarankan Anda menggunakan /sourceDependencies dengan argumen direktori. Jika Anda memberikan argumen nama file tunggal, dua instans pengompilasi dapat mencoba membuka file output secara bersamaan dan menyebabkan kesalahan. Penggunaan /MP dengan /sourceDependencies- untuk mengirim output dapat stdout menyebabkan hasil yang saling terkait.

Ketika kesalahan kompilator non-fatal terjadi, informasi dependensi masih ditulis ke file output.

Semua jalur file muncul sebagai jalur absolut dalam output.

Contoh

Mengingat kode sampel berikut:

// ModuleE.ixx:
export module ModuleE;
import ModuleC;
import ModuleD;
import <iostream>;

Anda dapat menggunakan /sourceDependencies dengan opsi pengkompilasi lainnya:

cl ... /sourceDependencies output.json ... main.cpp

di mana ... mewakili opsi kompilator Anda yang lain. Baris perintah ini menghasilkan file output.json JSON dengan konten seperti:

{
    "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"
            }
        ]
    }
}

Kami telah menggunakan ... untuk menyingkat jalur yang dilaporkan. Laporan berisi jalur absolut. Jalur yang dilaporkan bergantung pada di mana pengkompilasi menemukan dependensi. Jika hasilnya tidak terduga, Anda mungkin ingin memeriksa pengaturan jalur sertakan proyek Anda.

ProvidedModule mencantumkan nama modul atau partisi modul yang diekspor.

Untuk mengatur opsi pengkompilasi ini di lingkungan pengembangan Visual Studio

Anda biasanya tidak boleh mengatur opsi ini sendiri di lingkungan pengembangan Visual Studio. Ini diatur oleh sistem build.

Lihat juga

Opsi pengkompilasi MSVC
Sintaks baris perintah pengkompilasi MSVC
/scanDependencies
/sourceDependencies:directives