Bagaimana cara mengetahui di mana g ++ dapat menemukan file yang disertakan? Pada dasarnya jika saya
#include <foo.h>
g ++ akan memindai jalur pencarian, menggunakan opsi penyertaan apa pun untuk menambah atau mengubah jalur. Tetapi, pada akhirnya, apakah ada cara saya dapat memberi tahu jalur absolut dari foo.h yang dipilih g ++ untuk dikompilasi? Terutama relevan jika ada lebih dari satu foo.h di berbagai jalur pencarian.
Singkatnya cara untuk mencapai itu ... apakah ada cara untuk mendapatkan g ++ untuk memberi tahu saya apa jalur pencarian terakhirnya setelah memasukkan default dan semua termasuk opsi?
Jawaban:
Ini akan memberikan dependensi yang mencantumkan jalur absolut dari file yang disertakan:
Jika Anda tidak ingin sistem menyertakan (yaitu
#include <something.h>
), gunakan:sumber
juga akan mencetak jalur lengkap file yang disertakan dalam format yang menunjukkan header mana yang menyertakan file
sumber
clang++ -MM -H
(yang merupakan kombinasi yang sedikit berguna).clang++ -H -fsyntax-only ...
jika Anda ingin menghindari menghasilkan file keluaran (juga berfungsigcc
).Tentu digunakan
sumber
Jika Anda menggunakan
-MM
atau salah satu opsi terkait (-M
, dll), Anda hanya mendapatkan daftar header yang disertakan tanpa semua output preprocessor lainnya (yang sepertinya Anda dapatkan dengang++ -E -dI
solusi yang disarankan ).sumber
g++ -MM t.cc
tidak menunjukkan inklusi sama sekali, adilt.o: t.cc
. Apakah itu membutuhkan sesuatu yang lain?/showIncludes
opsi. MSVC bahkan akan membuat indentasi untuk menampilkan tajuk bersarang (Saya tidak melihatnya-M
di GCC).