xref: /Universal-ctags/docs/parser-cmake.rst (revision 7c39d0513b839637f39e023f2f1a009cb08b322e)
1*7c39d051SHadriel Kaplan.. _cmake:
2*7c39d051SHadriel Kaplan
3*7c39d051SHadriel Kaplan======================================================================
4*7c39d051SHadriel KaplanCMake parser
5*7c39d051SHadriel Kaplan======================================================================
6*7c39d051SHadriel Kaplan
7*7c39d051SHadriel KaplanThe CMake parser is used for ``.cmake`` and ``CMakeLists.txt`` files.
8*7c39d051SHadriel KaplanIt generates tags for the following items:
9*7c39d051SHadriel Kaplan
10*7c39d051SHadriel Kaplan- User-defined functions
11*7c39d051SHadriel Kaplan- User-defined macros
12*7c39d051SHadriel Kaplan- User-defined options created by ``option()``
13*7c39d051SHadriel Kaplan- Variables defined by ``set()``
14*7c39d051SHadriel Kaplan- Targets created by ``add_custom_target()``, ``add_executable()`` and ``add_library()``
15*7c39d051SHadriel Kaplan
16*7c39d051SHadriel KaplanThe parser uses the experimental multi-table regex ``ctags`` options to
17*7c39d051SHadriel Kaplanperform the parsing and tag generation.
18*7c39d051SHadriel Kaplan
19*7c39d051SHadriel KaplanCaveats:
20*7c39d051SHadriel Kaplan
21*7c39d051SHadriel Kaplan	Names that are ``${}`` references to variables are not tagged.
22*7c39d051SHadriel Kaplan
23*7c39d051SHadriel Kaplan	For example, given the following::
24*7c39d051SHadriel Kaplan
25*7c39d051SHadriel Kaplan	    set(PROJECT_NAME_STR ${PROJECT_NAME})
26*7c39d051SHadriel Kaplan	    add_executable( ${PROJECT_NAME_STR} ... )
27*7c39d051SHadriel Kaplan	    add_custom_target( ${PROJECT_NAME_STR}_tests ... )
28*7c39d051SHadriel Kaplan	    add_library( sharedlib ... )
29*7c39d051SHadriel Kaplan
30*7c39d051SHadriel Kaplan	...the variable ``PROJECT_NAME_STR`` and target ``sharedlib`` will both be tagged,
31*7c39d051SHadriel Kaplan	but the other targets will not be.
32*7c39d051SHadriel Kaplan
33*7c39d051SHadriel Kaplan
34*7c39d051SHadriel KaplanReferences:
35*7c39d051SHadriel Kaplan
36*7c39d051SHadriel Kaplan	https://cmake.org/cmake/help/latest/manual/cmake-language.7.html
37