


CTAGS(1)                                                 CTAGS(1)


NNAAMMEE
       ctags - Generates "tags" and (optionally) "refs" files

SSYYNNOOPPSSIISS
       ccttaaggss [--ssttvvrraa] _f_i_l_e_s_n_a_m_e_s...

DDEESSCCRRIIPPTTIIOONN
       _c_t_a_g_s  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 _r_e_f_(_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]

OOPPTTIIOONNSS
       --tt     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.

       --vv     Include variable declarations.  A tag will be  gen-
              erated for each variable, except for those that are
              declared inside the body of a function.

       --ss     Include  static  tags.   _C_t_a_g_s  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".

       --rr     This causes  _c_t_a_g_s  to  generate  both  "tags"  and
              "refs".  Without --rr, it would only generate "tags".

       --aa     Append to  "tags",  and  maybe  "refs".   Normally,
              _c_t_a_g_s  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



                                                                1





CTAGS(1)                                                 CTAGS(1)


              on a single command-line; it allows  you  to  split
              the arguments among several invocations.

FFIILLEESS
       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 every-
              body, but you still everybody to  know  what  argu-
              ments the library functions need.

BBUUGGSS
       _c_t_a_g_s  is  sensitive to indenting and line breaks.  Conse-
       quently, it might not discover all of the tags in  a  file
       that is formatted in an unusual way.

SSEEEE AALLSSOO
       elvis(1), refs(1)

AAUUTTHHOORR
       Steve Kirkendall
       kirkenda@cs.pdx.edu






























                                                                2


