Emacs 与 cscope 结合使用,支持多个目录

3
当我的源代码存在多个目录中时,如何在Emacs中设置cscope?
假设我有几个C++项目路径:
1. /path/to/my/code(及其子目录) 2. /path/to/other/code(及其子目录) 3. /path/to/static/linking/include/files(及其子目录) 4. /path/to/static/linking/lib/files'(及其子目录)
我想使用xcscope浏览/查找我的代码和我链接到的库中的符号。
xcscope.el的说明instructions说我应该首先在/path/to/my/code上运行C-c s(Cscope-> Create list and index),但是我困惑于如何让cscope索引其他路径。
文档说我应该转到其他目录并运行cscope -b,但之后我该怎么办?
我查看了由C-c s生成的cscope.files文件。我认为我应该将其他路径添加到此文件中,但是该文件包括源代码文件的列表(不是目录)。

如果我想索引项目根目录之外的每个文件,我是否必须手动编辑cscope.files

2个回答

3

这份文档很令人困惑。

我从 http://cscope.sourceforge.net/large_projects.html 上得到了一个解决方案。但还是很难理解。

cscope.files 的命名恰如其分。它不是目录,只包含文件。而这听起来就够可怕的了。如果你有数百个文件,则需要将每个文件的路径以每行一个的形式写入 cscope.files。无误。

使用一些脚本自动化处理。例如,在 Linux 上,使用 bash 脚本和重定向 (>,>>,|) 运算符从任何目录中选择和过滤文件,最终写入 cscope.files 中。cscope.files 所在的目录呢?如果你不包括这些文件,当你在源目录下用编辑器(如 emacs,但适用于任何 IDE)打开项目时,它就只会找到那些文件。所以也要包括这些文件,以便从任何地方轻松打开项目。

选项“recursive/-R”似乎显然要发送给 cscope-indexer。但对于许多根目录并不起作用。什么都没有发生(可能可以通过脚本、elisp 或其他方式实现)。只需将这些文件的绝对路径添加到 cscope.files 中即可。也许你需要确保每个项目只有一个 cscope.files。不要将它们相对于每个目录分开。或者也许可以,这是一个值得探究的问题。

记住,在文件名前包括 /path/to/each/file/ ,以便让 cscope.files 能够从任何地方指向它。cscope 不是“聪明”的,它只是跟随查找的指令。如果你没有告诉它“filename”在哪里,它就不知道去哪里找。如果特定的 cscope.files 目录之外没有 dir 路径的孤立文件名,你只是在要求它调用 locate filename,但它无法完成。

我希望能够在 emacs 中使用 xcscope,只需添加要分类和索引的目录即可,就像 xcscope 文档和 emacs 菜单中所示。但我没有成功实现这种方式。


0

软链接(ln -s)不是可以用吗?我用过没问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接