You can use the /showIncludes
switch to cl.exe
to list the headers #include
d by your source files. Nested includes are indicated by indentation with spaces. You can also turn on syntax-checking mode with the /Zs
switch, to increase speed and avoid creation of .obj files.
If you have Perl and a version of uniq
(e.g. from GnuWin32) installed, the following one-liner will dump the list of unique headers used by myfile.cpp
:
cl /Zs /showIncludes /EHsc myfile.cpp | perl -ne "print if s/^Note: including file: *//" | sort | uniq
It should not be too difficult to pipe this through another script that creates the relevant nmake
rules.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…