2012-05-23 24 views
5

Khi tôi đang sử dụng M-x compile để thực hiện biên dịch song song với make -jn cho dự án dir đa cấp, khi tôi gặp lỗi, tôi không thể đến đúng địa điểm với công cụ next-error. Emacs luôn luôn đi đến thư mục sai cho các tập tin có vấn đề. Nhưng tôi không có vấn đề gì nếu tôi chỉ làm điều đó mà không có -jn.Xử lý lỗi xây dựng song song một cách chính xác trong chế độ biên dịch emacs

+0

Bạn có thể đăng một ví dụ tối thiểu không? –

Trả lời

0

next-error sử dụng đầu ra văn bản của trình biên dịch của bạn để xác định nơi cần đi. Nhưng với việc biên dịch song song, đầu ra văn bản này có thể bị hỏng, và thậm chí nếu nó không bị hỏng và có thể không rõ ràng (nghĩ về một nhiệm vụ biên dịch foo/bar và tác vụ khác biên dịch toto/titi, và đầu ra trông giống như "enter" thư mục foo; nhập thư mục toto; lỗi trong thanh: 20; lỗi trong titi: 69 ").

tôi chỉ có thể nghĩ về những cách sau đây để giải quyết vấn đề này:

  • cấu trúc làm cho các tập tin để bạn không bao giờ thay đổi thư mục (để tất cả các tên tập tin có liên quan đến thư mục làm việc hiện tại giống nhau).
  • thay đổi tệp của bạn để chuyển tên tệp tuyệt đối vào trình biên dịch của bạn, vì vậy tất cả tên tệp trong thông báo lỗi đều tuyệt đối.
  • hack số compile.el của Emacs để khi tìm kiếm "thanh", nó tìm nạp nó trong tất cả các thư mục đã được đề cập trước đó.

Thay đổi cuối cùng này có thể là tốt nhất (tức là chào mừng bản vá), nhưng lưu ý rằng nó vẫn gặp sự cố nếu "bar" tồn tại ở cả "foo" và "toto". Hai thay đổi còn lại vẫn có thể gặp vấn đề bởi vì đầu ra cũng có thể trông giống như "Nhập thư mục foNhập thư mục toto; o;"; và tôi không biết những gì có thể được thực hiện để tránh vấn đề này.

Các vấn đề liên quan