Emacs和cscope有多个目录

时间:2012-10-17 22:10:56

标签: emacs cscope

当我的源代码位于多个目录中时,如何在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'(和子目录)
  5. 我想使用xcscope来导航/查找我的代码中的符号以及我要链接到的库。

    xcscope.el的{​​{3}}说我应该首先在/path/to/my/code运行 Cc s (Cscope->创建列表和索引),但我是然后混淆了我如何让cscope索引其他路径。

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

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

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

2 个答案:

答案 0 :(得分:3)

文档令人困惑。

我从http://cscope.sourceforge.net/large_projects.html得到了一个sol'n。仍然令人困惑。

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

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

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

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

答案 1 :(得分:0)

软链接(ln -s)不起作用吗?为我工作。