【发布时间】:2014-04-18 15:04:53
【问题描述】:
我是 gtags 新手,有一个问题。我有一个大项目,比如android AOSP,我想让gtags解析一些文件夹,怎么用gtags实现呢?我搜索并得到了解决方案:
- 在 gtags 中使用 -f 选项,似乎不支持文件夹
我可以设置文件夹路径并且 gtags 只处理这些文件夹有什么好主意吗?
【问题讨论】:
标签: emacs tags gnu-global
我是 gtags 新手,有一个问题。我有一个大项目,比如android AOSP,我想让gtags解析一些文件夹,怎么用gtags实现呢?我搜索并得到了解决方案:
我可以设置文件夹路径并且 gtags 只处理这些文件夹有什么好主意吗?
【问题讨论】:
标签: emacs tags gnu-global
更新:问题的作者在 cmets 中提出了一个更好的解决方案。我在这里添加它,以便更容易找到:
.. 在我需要的子目录中创建标签文件,并添加目录 加载项目时到 GTAGSLIBPATH,
我的回答:
您可以通过将文件/目录列表添加到 ~/.globalrc 或 /etc/gtags.conf 中的 skip 关键字来限制 gtags 索引的内容。这是一个示例 gtags.conf 文件。
问题是 global/gtags 包通常不安装 gtags.conf(至少它在 ubuntu 12.04 上的 global-5.7.1-2 中不存在),因此您需要从全局源获取它分发,或使用其他人的 gtags.conf 作为参考。例如here。
这样的事情应该可以工作。请注意,前导 / 表示 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 -
}
【讨论】: