2012-08-11 7 views
6

मैं एक परियोजना है जो llvm संकलक स्रोत-कोड की समझने की आवश्यकता है पर काम कर रहा हूँ। आर *कैसे एक परियोजना जो ग, सीपीपी और ज फ़ाइलें है के लिए cscope उपयोग करने के लिए?

लेकिन यह काम नहीं करता

cscope: LLVM के स्रोत कोड ब्राउज़ करने के लिए, मैं स्रोत के रूट निर्देशिका में आदेश के बाद साथ cscope का उपयोग करने की कोशिश की। चूंकि मुख्य रूप से .cpp और .h फ़ाइलें हैं लेकिन कुछ .c फ़ाइलें भी हैं। तो अब मुझे कोई संकेत नहीं है कि कैसे सेस्कोप काम करना है? क्या कोई मदद कर सकता है?

उत्तर

9

आप 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 के साथ उपयोग की जाने वाली फ़ाइल। आशा करता हूँ की ये काम करेगा! (, उपकरण ack-grep कहा जाता है उदाहरण उबंटू के लिए, कुछ वितरण में) एक ग्रेप की तरह आदेश खोज स्रोत कोड के लिए अनुकूलित:

+9

3 बहुत सारे 'ढूंढें | grep' थोड़ा अपमानजनक है। आप 'egrep' या' grep -E' को एक 'ढूंढ' के साथ पूरी तरह से अच्छी तरह से उपयोग कर सकते हैं: 'ढूंढें। -प्रकार एफ -प्रिंट | grep -E '\। (सी (पीपी)? | एच) $'> 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 

यह भी बाहर की जाँच के लायक हो सकता है http://cscope.sourceforge.net/cscope_vim_tutorial.html

+1

आपके उत्तर के लिए धन्यवाद! बस कर 'एल -name लगता है" * .cc "-ओ -name" * ज "> cscope.files' मेरे लिए काम किया। – pablofiumara

6

एक परियोजना में सभी C++ फ़ाइलों की सूची के लिए एक सुविधाजनक तरीका ack उपकरण का उपयोग करने के लिए है। आप इसे इस तरह चला सकते हैं:

ack -f --cpp > cscope.files 

उत्पादन सभी .cpp, .h, .cc.hpp फ़ाइलों

+1

सिर्फ आपके लिए आलसी उपयोगकर्ता हैं: 'sudo apt-get install ack' मुझे प्राप्त करता है: 'ack - कांजी कोड कनवर्टर ', एक ही उपयोगिता नहीं। 20 सेकंड के लिए http://beyondgrep.com/install/ पृष्ठ पढ़ना और मुझे लगता है कि यह 'sudo apt-get ack-grep इंस्टॉल करें' – qneill

0

सिर्फ इसलिए कि यह अभी भी सबसे लोकप्रिय प्रविष्टि है करने के लिए रास्ते हैं। stdin thingy इस बीच में है या नहीं जोड़ा गया हो सकता है, लेकिन यह इसके बारे में सुरुचिपूर्ण तरह बना देता है:

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" 
संबंधित मुद्दे