出错情况:
之前一直在使用cscope来阅读源码,期间碰到过找到了函数/变量定义,却跳转不过去的情况,提示”File ../xxxx/yyyy.c”不存在之类的错误。
解决方法:
出现该问题的原因是当我们使用cscope -Rbq
生成cscope.out
文件时,使用的是相对路径。解决的思路也很简单,生成时使用绝对路径即可。cscope官方提供了一个解决方案:使用cscope.files
文件来生成cscope.out
文件即可。
cscope.files
存的内容是需要建立索引的所有文件名。像这样:
至于如何生成该文件,最简单的方法就是使用find
命令将所有符合条件的文件列出,重定向到cscope.files
中。例如find ./ -name *.c >> cscope.files
。当然,也可以写一个简单的shell或者python脚本来生成(末尾提供python脚本源码,在需要生成cscope.files
的目录下执行即可)。
有了cscope.files
之后,我们运行cscope -bqk
即可。这样相对路径的问题就解决了。
简易python脚本:
#!/bin/python
import os
save_file = open("cscope.files", 'w')
for root, dirs, list in os.walk("./"):
for i in list:
cur_path = os.path.abspath(root)
file_path = cur_path + '/' + i
save_file.write(file_path+'\n')
save_file.close()