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