Masalah: Saya punya proyek Visual C ++ besar yang saya coba migrasi ke Visual Studio 2010. Ini adalah campuran besar barang-barang dari berbagai sumber dan dari berbagai usia. Saya mendapatkan masalah karena sesuatu termasuk keduanya winsock.h
dan winsock2.h
.
Pertanyaan: Apa alat dan teknik yang ada untuk menampilkan #include
hierarki untuk file sumber Visual Studio C ++?
Saya tahu tentang cl /P
untuk mendapatkan output preprocessor, tapi itu tidak jelas menunjukkan file mana termasuk file lain (dan dalam hal ini /P
outputnya adalah 376.932 baris panjang 8-)
Di dunia yang sempurna, saya ingin tampilan hierarkis file mana yang termasuk file lain, bersama dengan nomor baris sehingga saya dapat melompat ke sumber:
source.cpp(1)
windows.h(100)
winsock.h
some_other_thing.h(1234)
winsock2.h
c++
visual-studio
include
RichieHindle
sumber
sumber
gcc -H -fsyntax-only ...
untuk menampilkan hierarki. Kredit untuk stackoverflow.com/a/18593344/427545Jawaban:
Ada pengaturan:
Pengaturan Proyek -> Properti Konfigurasi -> C / C ++ -> Lanjutan -> Tampilkan Termasuk
yang akan menghasilkan pohon. Ini peta ke saklar kompiler / showIncludes
sumber
-H
diC/C++ -> Command Line - Additional Options
1>\s*Note: including file:\s*C:\\Program Files \(x86\).*(\r\n|\n|$)
Kompiler juga mendukung switch / showIncludes - ia tidak memberi Anda nomor baris, tetapi dapat memberikan tampilan yang cukup komprehensif yang mencakup dari mana.
Itu di bawah Pengaturan Proyek -> Properti Konfigurasi -> C / C ++ -> Lanjutan -> Tampilkan Termasuk.
sumber
Kami telah menemukan IncludeManager sebagai alat yang sangat kuat. Ini tidak gratis (tapi tidak mahal) dan memungkinkan kami untuk memahami masalah Sertakan kami dan menghentikan waktu kompilasi kami dari 50 menit hingga 8 menit dengan memangkas potongan besar termasuk yang tidak kami gunakan.
sumber
Tidak sebagus fitur sertakan hierarkis gcc, yang menunjukkan hierarki inklusi jalur langsung jika terjadi kesalahan. Opsi "tampilkan termasuk" di VS menunjukkan semuanya, yang berlebihan saat debugging hirarkis termasuk masalah file.
sumber
Ini adalah alat pihak ke-3 yang bagus, FOSS. Anda dapat mengekspor hasil ke XML, yang akan mencakup data tentang jumlah kemunculan dan nomor baris.
sumber
Sekarang ada plugin untuk Visual Studio yang disebut IncludeToolbox . Itu dapat membuat daftar dependensi Anda dan melakukan lebih banyak hal seperti penghapusan dan kompilasi acak untuk melihat apakah menyertakan itu diperlukan.
sumber
Coba redhat Source-Navigator untuk solusi yang lebih grafis .
sumber
cl / P harus menunjukkan nomor baris, sehingga Anda dapat mengetahui konteks dari mana file header dimasukkan.
Jika Anda mencabut garis dengan ...
grep "^ # line" file.i
... maka Anda harus memiliki indikasi yang cukup bersih tentang file apa yang ditemui secara berurutan oleh preprocessor.
Jika ini insiden satu kali, ini harus menjadi diagnostik yang cukup cepat.
sumber
Saya menggunakan Doxygen dan GraphViz .
Pasang keduanya. Pastikan untuk memilih GraphViz sebagai alat untuk menghasilkan diagram hierarki. Pilih "Gunakan alat dot dari paket GraphVix".
Juga pastikan untuk memasukkan direktori biner dari GraphViz ke dalam variabel lingkungan PATH Anda.
sumber