cscope是符号链接的文件

时间:2015-04-08 15:16:46

标签: linux bash vim symlink cscope

我有一个包含多个文件的源目录。其中一些是其他文件的符号链接。

我创建了一个cscope.files文件。但是当我执行cscope时。它抱怨符号链接的文件:

cscope: cannot find file /home/bla/source/file.cc

我认为这不是很好,但也许正确的方法是更改​​“查找”脚本,只是编写符号链接的目的地?

4 个答案:

答案 0 :(得分:5)

目前我正在使用:

# Write only the files which are NOT symlinks
find `pwd` \( \( -iname "*.c" -o -iname "*.cc" -o -iname "*.h" \) -and \( -not -type l \) \) -print > cscope.files
# Add the target of the symlink for all files matching the right extension, and are symlinks
find `pwd` \( \( -iname "*.c" -o -iname "*.cc" -o -iname "*.h" \) -and -type l \) -printf "%l\n"  >> cscope.files

但这似乎是一个可怕的解决方案。还在寻找更好的一个

答案 1 :(得分:2)

我认为您可以使用该命令查找您搜索的文件夹中的所有实际路径

find -L `pwd` -iname "*.c" -o -iname "*.h" > cscope.files
find -L /usr/src/linux-headers-3.19.0-15-generic/ -iname '*.h' -exec realpath {} \; >> cscope.files

例如,如果我想将开发文件夹和linux内核头文件添加到cscope.files,我将使用以下命令:

cat-file

我希望答案可以帮助你。

答案 2 :(得分:2)

例如,如果您想要/作为cscope的路径,并希望cscope搜索扩展名为.c / .h / .x / .s / .S的文件,您可以将find命令指定为:

find / -type f -name "*.[chxsS]" -print -exec readlink -f {} \;> cscope.files

这将包括常规文件,包括符号链接的目标。

答案 3 :(得分:0)

我只是执行以下操作以避免使用符号链接,并获取cscope.files中的绝对路径。使用绝对路径,当cscope与vim编辑器集成时,您可以从沙箱中的任何目录进行搜索

Pane

注意:如果从find中省略-print,它不会在cscope.files中仅将符号链接路径放在已解析的路径中。