我是 gtags 的新手,有一个问题。我有一个大项目,比如android AOSP,我想让gtags解析一些文件夹,我怎么用gtags来实现呢?我搜索并得到了解决方案:
- 将 -f 选项与 gtags 一起使用,似乎不支持文件夹
有什么好主意可以设置文件夹路径并且 gtags 只处理这些文件夹吗?
我是 gtags 的新手,有一个问题。我有一个大项目,比如android AOSP,我想让gtags解析一些文件夹,我怎么用gtags来实现呢?我搜索并得到了解决方案:
有什么好主意可以设置文件夹路径并且 gtags 只处理这些文件夹吗?
更新:问题的作者在评论中提出了更好的解决方案。我在这里添加它,以便更容易找到:
..在我需要的子目录中创建标签文件,并在加载项目时将目录添加到GTAGSLIBPATH,
我的答案:
您可以通过在 ~/.globalrc 或 /etc/gtags.conf 中添加文件/目录列表以跳过关键字来限制 gtags 索引的内容。这是一个示例 gtags.conf 文件。
问题是 global/gtags 包通常不安装 gtags.conf (至少它在 ubuntu 12.04 上的 global-5.7.1-2 中不存在),因此您需要从全局源代码分发中获取它,或者使用别人的 gtags.conf 作为参考。比如这里。
像这样的东西应该工作。请注意,领先的/
意思是from the top of the tree
。没有它,gtags 将跳过树中任何地方的匹配条目。:
common:\
:skip=/skip-this-dir/,/lib/and-this/,/include/and-this-one-too/:
-f 选项以 find(1) 为前提。请尝试以下方法。
$ find folder1 folder2 folder3 -type f -print | gtags -f -
或者
$ find folder1 folder2 folder3 -type f -print >gtags.files
$ gtags
这是我的 bash 函数,用于删除包括“dummy”和“win”在内的文件和路径:
function gtagsupdate {
find . -name "*.c" -o -name "*.cpp" -o -name "*.h" -o -name "*.hpp" | grep -v dummy | grep -v win | gtags -f -
}