2012-08-11 4 views
6

私はllvmコンパイラのソースコードの理解を必要とするプロジェクトに取り組んでいます。.c、.cpp、.hファイルを持つプロジェクトにcscopeを使用するには?

にcscope -R *

しかし、それは動作しません:LLVMのソースコードを参照するには、私は、ソースのルートディレクトリに、次のコマンドでのcscopeを使用しようとしました。主に.cppと.hファイルがありますが、いくつかの.cファイルもあります。だから私はcscopeを動作させる方法を手がかりにしていませんか?誰かが助けてくれますか?

答えて

9

をチェックアウトする価値があるかもしれない:

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++ファイルを一覧表示する

+9

'find | grepは少し無駄です。単一の 'find':' findで 'egrep'や' grep -E'を使うことができます。タイプf -print | grep -E '\。(c(pp)?h)$'> cscope.files'と入力します。 –

+2

ええ、そうです。実際には、物事を分かりやすくするために書きました。しかし、とにかくそれは賢明なことではありません。 – leonidus

+5

'cscope -R''または' cscope $(find -iregex '。+ \。[chp] +') ' – Haix64

2

大規模なコードベースをカバーするために、私は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 

また、それはあなたがLLVMのソースツリーのルートディレクトリから必要なタスクを実行するには、次のコマンドを使用することができます http://cscope.sourceforge.net/cscope_vim_tutorial.html

+1

ありがとうございました! 'find -L -name" * .cc "-o -name" * .h "> cscope.files'を実行してみてください。 – pablofiumara

6

便利な方法は、ackツールを使用することです:ソースコード用に最適化されたgrepのようなコマンドは、(いくつかのディストリビューションでは、例えばUbuntuのために、ツールがack-grepと呼ばれている)を検索します。これはまだ最も人気のあるエントリであるという理由だけで

+1

私のような怠惰なユーザーのために: 'sudo apt-get install ack' 「漢字コードコンバータ」と同じユーティリティではありません。 http://beyondgrep.com/install/ページを20秒間読むと、「sudo apt-get install ack-grep」と表示されます – qneill

0

ファイル.hpp.cc、すべての.cppへのパス、.hある

ack -f --cpp > cscope.files 

出力:あなたはこのようにそれを実行することができます。 STDINブツは、その間にか追加されているかもしれないが、それはそれは一種のエレガントになり:

find -regex '.*\.\(c\|h\|cpp\|cxx\|hh\|hpp\|hxx\)$' | cscope -i- -b -q 
0

私は物事が容易になり、私の.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" 
関連する問題