I've moved this tip to my blog with more detailed explanation: Generate Ctags Files for C/C++ Source Files and All of Their Included Header Files
When you want to generate a ctags file for your standard headers, you may have know the following command:
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q /usr/include
Yes, this could really work, but sometimes you may got a HUGE tags file, with some extra symbols that has nothing to do with your project. This tip will give you a solution: generate a tags file including symbols of your C/C++ files and their including headers.
The following shell script would do this for you:
#!/bin/sh gcc -M $* | sed -e 's/[\\ ]/\n/g' | \ sed -e '/^$/d' -e '/\.o:[ \t]*$/d' | ctags -L - --c++-kinds=+p --fields=+iaS --extra=+q
Assuming you have saved the code as ctags_with_deps.sh, simple execute
/path/to/ctags_with_deps.sh file1.cpp file2.c file3.cpp
then a tags file containing the symbols of the source files and headers included will be generated.
The ProjectTag plugin can also do this, and can work on Windows, but it requires you have your Vim built with Python enabled.
Comments[edit | edit source]
Hi , Need to generate tags for complete c++ project(i.e which has many folders inside folders). I tried using ctags -R, it is ignoring folders.
Please can some one help me in this/ :)
- What do you mean, "ignoring folders"? What do you get when you run that command?
- When I run ctags, I always put the directory to run on, even if the current directory. E.g.
ctags -R .instead of just
ctags -R; I'm not sure whether that makes a difference or not. --Fritzophrenic (talk) 16:20, June 28, 2013 (UTC)