我的工作需要的理解项目LLVM编译器的源代码。 要浏览LLVM的源代码,我试图使用cscope与源的根目录下面的命令:
cscope的-R *
但是,这是行不通的。 由于目前主要的.cpp和.h文件,但一些.c文件也存在。 所以,现在我没有线索如何使cscope的工作? 是否有人可以帮助?
我的工作需要的理解项目LLVM编译器的源代码。 要浏览LLVM的源代码,我试图使用cscope与源的根目录下面的命令:
cscope的-R *
但是,这是行不通的。 由于目前主要的.cpp和.h文件,但一些.c文件也存在。 所以,现在我没有线索如何使cscope的工作? 是否有人可以帮助?
您可以使用下面的命令从LLVM源代码树的根目录下执行所需的任务:
touch tags.lst
find | grep "\.c$" >> tags.lst
find | grep "\.cpp$" >> tags.lst
find | grep "\.h$" >> tags.lst
cscope -i tags.lst
这将创造出用于与cscope在浏览代码cscope.out中的文件。 希望能帮助到你!
一个方便的方式列出所有的C++
项目中的文件是使用ACK工具:一个类似grep的命令的源代码搜索优化(在某些发行版,比如Ubuntu的,该工具被称为ack-grep
)。 你可以像这样运行:
ack -f --cpp > cscope.files
输出的路径所有.cpp
, .h
, .cc
.hpp
文件
为了弥补我们大的代码库我有一个脚本,看起来有点像这样建立cscope的索引。 我改变的原因/是为了让我有充分的文件路径的源文件,这使得工作的事情有点顺畅。
cd /
find -L /home/adrianc/code -name "*.c" -o -name "*.cc" -o -name "*.h" > /home/adrianc/code/cscope.files
cd /home/adrianc/code
/usr/local/bin/cscope -b -icscope.files -q -u
此外,它可能是值得一试http://cscope.sourceforge.net/cscope_vim_tutorial.html
正因为这仍然是最受欢迎的项目。 该标准输入啄可能在此期间还是没有被添加,但它使一种优雅:
find -regex '.*\.\(c\|h\|cpp\|cxx\|hh\|hpp\|hxx\)$' | cscope -i- -b -q
我在我的.bashrc中,这使得事情变得更加容易以下。 运行cscope_build()
以产生数据的基础上和cscope
开始cscope的工具。
# Use vim to edit files
export CSCOPE_EDITOR=`which vim`
# Generate cscope database
function cscope_build() {
# Generate a list of all source files starting from the current directory
# The -o means logical or
find . -name "*.c" -o -name "*.cc" -o -name "*.cpp" -o -name "*.h" -o -name "*.hh" -o -name "*.hpp" > cscope.files
# -q build fast but larger database
# -R search symbols recursively
# -b build the database only, don't fire cscope
# -i file that contains list of file paths to be processed
# This will generate a few cscope.* files
cscope -q -R -b -i cscope.files
# Temporary files, remove them
# rm -f cscope.files cscope.in.out cscope.po.out
echo "The cscope database is generated"
}
# -d don't build database, use kscope_generate explicitly
alias cscope="cscope -d"