我试图在我的Makefile中创建一个目标,使用ctags自动创建一个标签文件.
我有一个源文件列表(.cpp文件),但我没有所有头文件的列表(我使用g -MM创建头依赖项列表).
我会假设ctags在生成标记时会遵循.cpp文件中的任何#include指令,但似乎我的假设是错误的.
ctags --fields=+iaS --extra=+q myClass.cpp
然后进入vim并输入一个对象的名称,后跟一个’.’我收到错误“Pattern not found”.
ctags --fields=+iaS --extra=+q myClass.cpp myClass.h
并在vim中做同样的事情我得到一个可爱的自动完成的成员变量/函数列表.
我的’myClass.cpp’文件中的第一行是
#include "myClass.h"
那么为什么ctags也没有使用它来解析头文件呢?
解决方法
不.不幸/幸运.
您自己的包含后不会有太多问题.问题始于
>条件编译
>外部(系统)库.
幸运的是,通过执行类似的操作可以轻松解决您自己库的问题
ctags *.h *.cpp ctags -R src/
你可以用cpp和ctags一起破解一些东西.这不方便.一个有趣的方法是修补ctags以跟随cpp输出中的#line编译指示,从而将所有标记与其各自的源相关联.
但是,这种方法不会像您期望的任何预处理器符号/定义那样工作(宏已经扩展,因此您将无法通过ctags找到宏).
:se tags+=/home/me/libs/tags.stdc++ :se tags+=/home/me/libs/tags.libsox
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。