The Emacs Wiki is often a good source of answers to common problems or best practices. For your specific problem, there is a solution for both Windows and Unixen:
http://www.emacswiki.org/emacs/RecursiveTags#toc2
Basically you run the command to find all files .cppand everything .h(change the file selector if you use different file endings, for example .C), and transfer the result to etags. Since Windows does not seem to have xargs, you need a newer version of etags that can read from stdin (note the dash at the end of the line that stands for stdin). Of course, if you are using the latest version of etags, you can also use the dash option instead of xargs.
Window
cd c:\source-root
dir /b /s *.cpp *.h *.hpp | etags --your_options -
Unix
cd /path/to/source-root
find . -name "*.cpp" -print -or -name "*.h" -print | xargs etags --append
source
share