2011-08-24 21 views
5

Büyük bir yazılım projesi için etags kullanarak TAGS tabloları oluşturmaya çalışıyorum. TAGS dosyası, bir alt dizindeki var olanların yerine, alt dizindeki var olmayanların yerine, # dizisi yönergelerinin yerine # niteliksiz bir dosya adına başvuran #. dosyayı içeren alt dizini içeren satır.Emacs TAGS tablosu, lex/yacc dosyalarında #line yönergesiyle karıştırılıyor

nasıl Etiketler tabloları düzgün alt dizinine mevcut yerine üst düzey dosyaları olarak yorumlanır karar bu #line direktifleri oluşturmak için alabilirim?

Ben üst düzey dizinden böyle ETAGların çalıştırın:

rm -f TAGS; find . \(-not -regex '.*include/.*' \) 
       -a \(-name '*.h' -o -name '*.hh' -o -name '*.y' -o -name '*.l' 
        -o -name '*.cc' -o -name '*.cpp' -o -name '*.hpp' -o -name '*.c' 
        -o -name '*.inl' \) 
      | xargs etags -o TAGS --append 

Ama bir dosya var, oluşturulan dosyanın ortasında aşağıdaki satırları içeren hareket/Par.c:

#define T_NUM 274 
#define T_STRING 275 

#line 5 "Par.y" 

#undef actCPMeshConfigIn_yywrap 
#define actCPMeshConfigIn_YYMAXDEPTH 20000 

act/Par.c,1160 
[...] 
#define T_NUM 92,2870 
#define T_STRING 93,2888 

Par.y,1320 
#undef actCPMeshConfigIn_yywrap20, 
#define actCPMeshConfigIn_YYMAXDEPTH 22, 

Ama dosya Par.y eylemdir: Aşağıdakilerden Etiketler tablo girdileri ile sonuçlanır

ually act/Par.y konumunda bulunur, ancak #line yönergesi geçerli dosyaya göre değişir, ancak TAGS bunu oluşturulan TAGS dosyasına göre yapar. Bu #line direktifleri düzgün onlar içinde meydana dosyasına göre olarak yorumlanır böylece projeyi nasıl inşa değiştirmeden

, nasıl TAGS dosyaları oluşturabilir? Alternatif olarak, bu zahmetli dosyaları nasıl kolayca atlayabilirim?

cevap

0

Çözüm yerine etgas modda ve yinelemeli Exuberant Ctags çalıştırmaktır. Sen coşkulu ctags coşkulu ctags bir bağlantıyı adlı ETAGların oluşturarak ETAGların modunda çalışmasına neden ve buna ETAG'ları olarak başlatılan ve doğru bir şekilde davrandığını edildi algılar:

ETAGların -R.

ctags -e -R:

Alternatif -e ETAGlar modudur.