Can ctags be made to follow #include directives?

只谈情不闲聊 提交于 2019-12-03 08:27:00

nope. unfortunately/fortunately.

There wouldn't be too many problems following your own includes. The problem starts with

  • conditional compilation
  • external (system) libraries.

Fortunately, the problem for your own libraries is easily solved by doing something like

ctags *.h *.cpp
ctags -R src/

You could hack something together with cpp and then ctags. It would not work conveniently. A half-interesting approach would be to patch ctags to follow the #line pragma's in cpp's output and hence relate all tags to their respective sources.

However, that approach would not work as you'd expect for any preprocessor symbols/defines (macros have been expanded, so you wouldn't be able to find a macro by ctags).

The usual way to resolve this, is to generate a 'standard' tags file for your external libraries, and

:se tags+=/home/me/libs/tags.stdc++
:se tags+=/home/me/libs/tags.libsox

etc. Several libraries have tutorials on how to make a useful tags file for use with their libraries (or prebuilt tags files assuming a certain folder layout)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!