Tôi đang cố gắng tạo các bảng TAGS bằng cách sử dụng các dấu thập phân cho một dự án phần mềm lớn. Tệp TAGS kết thúc có các mục nhập vào các tệp không tồn tại ở cấp cao nhất thay vì các tệp tồn tại trong thư mục con do các chỉ thị #line trong tệp .c được tạo ra lex/yacc tham chiếu đến tên tệp không đủ tiêu chuẩn thay vì # dòng bao gồm thư mục con chứa tệp.Bảng Emacs TAGS bị nhầm lẫn bởi chỉ thị #line trong các tệp lex/yacc
Làm cách nào để có được các bảng TAGS tạo ra với các chỉ thị #line này được giải quyết đúng cách vào tệp hiện có trong thư mục con thay vì được hiểu là tệp cấp cao nhất?
tôi chạy etags như thế này từ trên thư mục cấp:
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
Nhưng tôi có một tập tin, hành động/Par.c, có chứa các dòng sau vào giữa các tập tin được tạo ra:
#define T_NUM 274
#define T_STRING 275
#line 5 "Par.y"
#undef actCPMeshConfigIn_yywrap
#define actCPMeshConfigIn_YYMAXDEPTH 20000
nào dẫn đến TAGS mục bảng các nội dung sau:
act/Par.c,1160
[...]
#define T_NUM 92,2870
#define T_STRING 93,2888
Par.y,1320
#undef actCPMeshConfigIn_yywrap20,
#define actCPMeshConfigIn_YYMAXDEPTH 22,
Nhưng những tập tin Par.y là hành động ual nằm ở hành động/Par.y, nhưng chỉ thị #line liên quan đến tệp hiện tại, nhưng TAGS làm cho nó liên quan đến tệp TAGS được tạo.
Không thay đổi cách xây dựng dự án, làm cách nào để tạo các tệp TAGS để các chỉ thị #line này được hiểu đúng là có liên quan đến tệp chúng xảy ra bên trong? Ngoài ra, làm thế nào tôi có thể bỏ qua những tập tin phiền hà một cách dễ dàng?