ctags(1)
NAME
ctags - Generates "tags" and (optionally) "refs" files
SYNOPSIS
ctags [-stvra] filesnames...
DESCRIPTION
ctags generates the "tags" and "refs" files from a group of C source
files. The "tags" file is used by Elvis' ":tag" command, control-]
command, and -t option. The "refs" file is sometimes used by the ref(1)
program.
Each C source file is scanned for #define statements and global function
definitions. The name of the macro or function becomes the name of a
tag. For each tag, a line is added to the "tags" file which contains:
- the name of the tag
- a tab character
- the name of the file containing the tag
- a tab character
- a way to find the particular line within the file.
The filenames list will typically be the names of all C source files in
the current directory, like this:
$ ctags -stv *.[ch]
OPTIONS
-t Include typedefs. A tag will be generated for each user-defined
type. Also tags will be generated for struct and enum names. Types
are considered to be global if they are defined in a header file,
and static if they are defined in a C source file.
-v Include variable declarations. A tag will be generated for each
variable, except for those that are declared inside the body of a
function.
-s Include static tags. Ctags will normally put global tags in the
"tags" file, and silently ignore the static tags. This flag causes
both global and static tags to be added. The name of a static tag
is generated by prefixing the name of the declared item with the
name of the file where it is defined, with a colon in between. For
example, "static foo(){}" in "bar.c" results in a tag named
"bar.c:foo".
-r This causes ctags to generate both "tags" and "refs". Without -r,
it would only generate "tags".
-a Append to "tags", and maybe "refs". Normally, ctags overwrites
these files each time it is invoked. This flag is useful when you
have to many files in the current directory for you to list them on
a single command-line; it allows you to split the arguments among
several invocations.
FILES
tags A cross-reference that lists each tag name, the name of the source
file that contains it, and a way to locate a particular line in the
source file.
refs The "refs" file contains the definitions for each tag in the "tags"
file, and very little else. This file can be useful, for example,
when licensing restrictions prevent you from making the source code
to the standard C library readable by everybody, but you still
everybody to know what arguments the library functions need.
BUGS
ctags is sensitive to indenting and line breaks. Consequently, it might
not discover all of the tags in a file that is formatted in an unusual
way.
SEE ALSO
elvis(1), refs(1)
AUTHOR
Steve Kirkendall
kirkenda@cs.pdx.edu