2009-12-28 65 views
33

Điểm của tập lệnh aclocalaclocal.m4, trong ngữ cảnh sử dụng autotools để định cấu hình tệp nguồn là gì? Từ những gì tôi đọc, aclocal quét các tệp macro cho các macro sau này được sử dụng bởi tự động hóa. Tôi không hiểu quá trình này sâu, nhưng có vẻ như chức năng quét có thể vừa được nhúng vào tự động hóa.Điểm nhấn của tiêu điểm là gì?

+0

@WilliamPursell, bạn có thể giải thích các thẻ "m4sh" và "m4sugar" không? Họ là gì và làm thế nào để họ áp dụng cho câu hỏi này, khi họ không được đề cập bất cứ nơi nào trong câu hỏi hoặc câu trả lời? – Charles

+0

@Charles autoconf không trực tiếp sử dụng m4, thay vào đó nó sử dụng trình bao bọc 'm4sh' và' m4sugar'. Mục đích của aclocal là tạo các macro m4sh và m4sugar có sẵn cho autoconf. –

+0

@WilliamPursell, vấn đề ở đây là câu hỏi không phải là cuối cùng về 'm4sh' hoặc' m4sugar', nhưng về 'aclocal' và autotools nói chung. Tôi không thấy gì ở đây hoặc trong câu hỏi khác mà bạn đã gắn thẻ với hai thẻ đó, điều đó thực sự làm cho các thẻ có liên quan đến câu hỏi. – Charles

Trả lời

36

Xem Alexandre Duret Lutz's Autotools tutorial, phải đọc.

Nó chứa sơ đồ giải thích cách các tập tin khác nhau của một dự án autotools tương tác với nhau và nhờ đó công cụ mà họ đang sử dụng: configure, config.h, config.status, aclocal.m4 vv

EDIT: John Calcote cũng giải thích mục đích của aclocal.m4 aclocal và trong chương đầu tiên của his book about Autotools: Chapter 1: A brief introduction to the GNU Autotools:

Tiện ích aclocal thực sự là tài liệu của hướng dẫn sử dụng GNU như một tạm thời công việc xung quanh cho sự thiếu linh hoạt nhất định trong Autocon f. Autoconf được thiết kế và viết đầu tiên, và sau đó một vài năm sau đó, ý tưởng cho Automake được hình thành như là một add-on cho Autoconf. Nhưng Autoconf thực sự không được thiết kế để có thể mở rộng trên quy mô theo yêu cầu của Automake.

...

Về cơ bản, việc aclocal là để tạo ra một tập tin aclocal.m4 bằng cách hợp nhất các file vĩ mô khác nhau từ gói Autotool cài đặt và địa điểm người dùng chỉ định, chẳng hạn rằng Autoconf thể tìm thấy chúng trong tất cả một nơi.

...

Tuy nhiên, các tài liệu mới nhất từ ​​cả hai bộ công cụ gợi ý rằng toàn bộ aclocal/acinclude mô hình bây giờ đã lỗi thời, trong lợi của một phương pháp mới hơn của chỉ định một thư mục chứa m4 vĩ mô các tập tin. Đề nghị hiện tại là bạn tạo một thư mục trong thư mục dự án của bạn được gọi đơn giản là m4 (acinclude có vẻ phù hợp hơn với tác giả này) và thêm macro dưới dạng tệp .m4 riêng lẻ vào thư mục này. Tất cả các tệp trong thư mục này sẽ được tập hợp thành aclocal.m4 trước khi Autoconf xử lý tệp configure.ac của bạn. Cuối cùng, aclocal sẽ được thay thế bằng chức năng trong Autoconf.

+2

Vì vậy, có 'aclocal' đã được thay thế bằng chức năng Autoconf? –

8

Trong phần mềm của tôi, aclocal.m4 thu thập các macro Autoconf không chuẩn mà tôi sử dụng trong khi xây dựng phần mềm của mình. Một tập hợp các macro tương ứng với thời gian phụ thứ hai - chọn tốt nhất các tùy chọn có sẵn (theo một số tiêu chí được xác định trước cho 'tốt nhất'); một bộ macro khác tương thích với sự phức tạp của hệ thống biên dịch ESQL/C của IBM Informix vì nó đã phát triển trong hai thập kỷ qua (nó xử lý ESQL/C 5.20, trong đó phiên bản 5.00 được phát hành vào năm 1990 và nó cũng xử lý các phiên bản mới nhất của IBM Informix ClientSDK 3.50 - điều mà phần lớn sự thất vọng của tôi, chứa ESQL/C 3.50 mặc dù nó đã được phát hành vào năm 2008).

Vì vậy, aclocal.m4 là dành cho các macro cục bộ không nhất thiết phải là một phần của Autoconf thông thường nhưng được sử dụng bởi phần mềm cụ thể của bạn.

+7

+1, đó là chính xác những gì nó cho. Rất nhiều người chỉ cần thả các bit đó trong configure.ac/configure.in đã được biết là gây ra sự điên rồ, mù lòa và thậm chí cả hội chứng tourette cho các nhà bảo trì phân phối. –

0

Liên kết tới bài viết của John Calcote như được đưa ra bởi http://freesoftwaremagazine.com/articles/brief_introduction_to_gnu_autotools/. Tôi đã nhận xét về bài đăng đó nhưng danh tiếng của tôi ở đây quá thấp.

Đoạn thiết yếu:

Về cơ bản, việc aclocal là để tạo ra một tập tin aclocal.m4 bằng cách hợp nhất các file vĩ mô khác nhau từ gói Autotool cài đặt và địa điểm người dùng chỉ định, chẳng hạn rằng Autoconf có thể tìm thấy tất cả ở một nơi.

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. - [Từ đánh giá] (/ đánh giá/bài đăng chất lượng thấp/18762464) – jfeferman