当我的源代码位于多个目录中时,如何在Emacs中设置cscope?
说我的C ++项目有几条路径:
/path/to/my/code
(和子目录)/path/to/other/code
(和子目录)/path/to/static/linking/include/files
(和子目录)/path/to/static/linking/lib/files
'(和子目录)我想使用xcscope
来导航/查找我的代码中的符号以及我要链接到的库。
xcscope.el
的{{3}}说我应该首先在/path/to/my/code
运行 Cc s (Cscope->创建列表和索引),但我是然后混淆了我如何让cscope索引其他路径。
文档说我应该转到其他目录并运行cscope -b
,但之后应该做什么?
我查看了 C-c s 构建的cscope.files
文件。我想我应该将其他路径添加到此文件中,但此文件包含源代码文件列表(不是目录)。
我是否必须手动编辑cscope.files
以添加我想要在项目根目录之外编制索引的每个文件?
答案 0 :(得分:3)
文档令人困惑。
我从http://cscope.sourceforge.net/large_projects.html得到了一个sol'n。仍然令人困惑。
cscope.files恰当地命名。它不是目录。它是文件,只有文件。这听起来有点令人生畏。如果你有数百个文件怎么办?然后你必须将数百行(每个文件一行)写入cscope.files。不开玩笑。
使用一些脚本自动化它。例如,在linux上,使用bash脚本和重定向(>,>>,|)运算符来选择和过滤来自任何和所有目录的文件到cscope.files中。 cscope.files所在的目录怎么样?如果您不包含这些文件,它只会在您在该源目录中打开项目(在emacs中,但可能适用于任何IDE)时找到它们。因此,也包括它们,以便从任何地方轻松打开您的项目。 发送到cscope-indexer的选项“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)不起作用吗?为我工作。