Non credo sia difficile fare una cosa del genere, con g++ ad esempio posso usare degli switch per fermarsi alla precompilazione, ed estrarre dal file precompilato i nomi dei file inclusi:
codice:
g++ -E helloworld.cpp | egrep '^#\ [0-9]*\ *\"([^<].*)\"' | cut -d '"' -f 2 | sort -u
risultato:
codice:
helloworld.cpp
/usr/include/c++/4.6/backward/binders.h
/usr/include/c++/4.6/bits/allocator.h
/usr/include/c++/4.6/bits/basic_ios.h
/usr/include/c++/4.6/bits/basic_ios.tcc
/usr/include/c++/4.6/bits/basic_string.h
/usr/include/c++/4.6/bits/basic_string.tcc
/usr/include/c++/4.6/bits/char_traits.h
/usr/include/c++/4.6/bits/concept_check.h
/usr/include/c++/4.6/bits/cpp_type_traits.h
/usr/include/c++/4.6/bits/cxxabi_forced.h
/usr/include/c++/4.6/bits/exception_defines.h
/usr/include/c++/4.6/bits/functexcept.h
/usr/include/c++/4.6/bits/ios_base.h
/usr/include/c++/4.6/bits/istream.tcc
/usr/include/c++/4.6/bits/locale_classes.h
/usr/include/c++/4.6/bits/locale_classes.tcc
/usr/include/c++/4.6/bits/locale_facets.h
/usr/include/c++/4.6/bits/locale_facets.tcc
/usr/include/c++/4.6/bits/localefwd.h
/usr/include/c++/4.6/bits/move.h
/usr/include/c++/4.6/bits/ostream_insert.h
/usr/include/c++/4.6/bits/ostream.tcc
/usr/include/c++/4.6/bits/postypes.h
/usr/include/c++/4.6/bits/range_access.h
/usr/include/c++/4.6/bits/stl_algobase.h
/usr/include/c++/4.6/bits/stl_function.h
/usr/include/c++/4.6/bits/stl_iterator_base_funcs.h
/usr/include/c++/4.6/bits/stl_iterator_base_types.h
/usr/include/c++/4.6/bits/stl_iterator.h
/usr/include/c++/4.6/bits/stl_pair.h
/usr/include/c++/4.6/bits/streambuf_iterator.h
/usr/include/c++/4.6/bits/streambuf.tcc
/usr/include/c++/4.6/bits/stringfwd.h
/usr/include/c++/4.6/cctype
/usr/include/c++/4.6/clocale
/usr/include/c++/4.6/cwchar
/usr/include/c++/4.6/cwctype
/usr/include/c++/4.6/debug/debug.h
/usr/include/c++/4.6/exception
/usr/include/c++/4.6/ext/atomicity.h
/usr/include/c++/4.6/ext/new_allocator.h
/usr/include/c++/4.6/ext/numeric_traits.h
/usr/include/c++/4.6/ext/type_traits.h
/usr/include/c++/4.6/initializer_list
/usr/include/c++/4.6/ios
/usr/include/c++/4.6/iosfwd
/usr/include/c++/4.6/iostream
/usr/include/c++/4.6/istream
/usr/include/c++/4.6/new
/usr/include/c++/4.6/ostream
/usr/include/c++/4.6/streambuf
/usr/include/c++/4.6/string
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/atomic_word.h
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++allocator.h
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++locale.h
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/cpu_defines.h
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_base.h
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/ctype_inline.h
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr-default.h
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/gthr.h
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/os_defines.h
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/features.h
/usr/include/getopt.h
/usr/include/locale.h
/usr/include/pthread.h
/usr/include/sched.h
/usr/include/stdio.h
/usr/include/time.h
/usr/include/unistd.h
/usr/include/wchar.h
/usr/include/wctype.h
/usr/include/x86_64-linux-gnu/bits/byteswap.h
/usr/include/x86_64-linux-gnu/bits/confname.h
/usr/include/x86_64-linux-gnu/bits/endian.h
/usr/include/x86_64-linux-gnu/bits/environments.h
/usr/include/x86_64-linux-gnu/bits/locale.h
/usr/include/x86_64-linux-gnu/bits/posix_opt.h
/usr/include/x86_64-linux-gnu/bits/predefs.h
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h
/usr/include/x86_64-linux-gnu/bits/sched.h
/usr/include/x86_64-linux-gnu/bits/setjmp.h
/usr/include/x86_64-linux-gnu/bits/time.h
/usr/include/x86_64-linux-gnu/bits/timex.h
/usr/include/x86_64-linux-gnu/bits/types.h
/usr/include/x86_64-linux-gnu/bits/typesizes.h
/usr/include/x86_64-linux-gnu/bits/wchar.h
/usr/include/x86_64-linux-gnu/bits/wordsize.h
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h
/usr/include/x86_64-linux-gnu/gnu/stubs.h
/usr/include/x86_64-linux-gnu/sys/cdefs.h
/usr/include/xlocale.h
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h
(e suppongo si possano fare cose analoghe con VC++, lì mi pare che la direttiva da ricercare nel file precompilato sia #file)
In ogni caso, fare un mestiere del genere con le Qt non credo sia una buona idea, è un framework complesso e con un approccio "naive" del genere a naso mi pare che ci sia il rischio di sfasciare tutto (specie perché da qui ricavi gli include da tirarti dietro, ma non le librerie da linkare)... tieni conto poi che le Qt sono già modularizzate (ci sono i vari moduli QtGui, QtCore, ...), non ti basta già questo?