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我应该首先运行( C-c sCscope->Create list and index) at /path/to/my/code,但是我对如何让 cscope 索引其他路径感到困惑。

文档说我应该去其他目录并运行cscope -b,但在那之后我应该做什么?

我查看了构建的cscope.files文件。C-c s我想我应该将我的其他路径添加到这个文件中,但是这个文件包含一个源代码文件列表(不是目录)。

我是否必须手动编辑cscope.files以添加我想要索引的每个位于项目根目录之外的文件?

4

2 回答 2

3

文档令人困惑。

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

cscope.files 被恰当地命名。它不是目录。它是文件,只有文件。这听起来令人生畏。如果您有数百个文件怎么办。然后,您必须将数百行(每个文件一行)写入 cscope.files。可不是闹着玩的。

使用一些脚本使其自动化。例如,在 linux 上,使用 bash 脚本和重定向 (>、>>、|) 运算符从任何和所有目录中选择和过滤文件到 cscope.files。cscope.files 所在的目录呢?如果您不包含这些文件,它只会在您在该源目录中打开您的项目(在 emacs 中,但可能适用于任何 IDE)时找到它们。因此,也包括它们,以便从任何地方轻松打开您的项目。选项“recursive/-R”似乎很明显可以发送到 cscope-in​​dexer。不,没有很多根目录。什么都不做(可能可以用脚本或 elisp 或谁知道做某事)。只需将这些文件(绝对路径)输入 cscope.files。您可能必须确保每个项目只有一个 cscope.files。不要将它们相对于每个目录分开。

请记住,如果您希望 cscope.files 从任何地方指向它,请在文件之前包含 /path/to/each/file/。cscope 不是“智能”,它很愚蠢,它只是指示在哪里寻找,它不知道在哪里寻找“文件名”,不知道它在哪里。您只是要求它调用locate filename,当您给它一个单独的文件名时,它无论如何都做不到,而没有特定 cscope.files 所在目录之外的 dir 路径。

我希望有一种在 emacs 中使用 xcscope 的方法,只需添加它将编目和索引的目录,正如 xcscope 文档和 emacs 菜单所建议的那样。但我没有成功地让它以这种方式工作。

于 2013-04-12T19:57:20.033 回答
0

Wouldn't a soft link (ln -s) work? Worked for me.

于 2017-07-12T14:58:45.057 回答