2013-02-21 20 views
20

Tôi đang sử dụng autotools cho một thư viện được lưu trữ trên GitHub. Thay vì sử dụng tệp văn bản README thông thường, tôi muốn sử dụng README.md.Sử dụng autotools với README.md

Khi chạy automake, tôi nhận được lỗi sau

Makefile.am: required file `./README' not found 

Có thể nói autotools không để kiểm tra README?

Trả lời

27

Chỉ cần chuyển tùy chọn foreign để tự động. Điều này nói với nó rằng phần mềm của bạn không tuân theo các tiêu chuẩn gnu điển hình, và do đó bỏ qua README không phải là một lỗi. Thông thường, điều này được thực hiện trong configure.ac:

AM_INIT_AUTOMAKE([foreign]) 

nhưng nó cũng có thể được thực hiện bằng cách gán AUTOMAKE_OPTIONS trong Makefile.am:

AUTOMAKE_OPTIONS = foreign 
+1

Tuyệt vời, cảm ơn. Lưu ý cho những người khác, bạn cần chạy 'autoreconf' sau khi thay đổi' configure.ac'. –

4

Tại sao yêu cầu không tìm tập tin README của bạn khi bạn đã có? Nó chỉ xảy ra ở định dạng markdown và được lưu dưới dạng README.md. Nếu bạn muốn tệp README của bạn giống hệt tệp README.md, tại sao bạn không liên kết với nó?

Từ dòng lệnh:

ln -s README.md README 

Bằng cách đó, bạn có thể giữ tập tin README.md của bạn và bất kỳ công cụ bạn sử dụng vẫn có thể làm việc với các quy ước đặt tên tiêu chuẩn. Nói theo thứ tự, có khả năng là các autotools cho phép bạn chỉ định một đường dẫn tùy chỉnh cho readme của bạn.

+4

Tôi không muốn điều này tất nhiên. Đó chỉ là khó hiểu. –

7

Chúng tôi đang sử dụng

README: README.md 
     fgrep -v "[Build Status]" $< \ 
       | markdown \ 
       | html2text -style pretty -nobs \ 
       | sed -e 's:&gt;:>:g' \ 
       > [email protected] 

để tạo ra một văn bản README từ README.md

+0

cảm ơn bạn! nhưng tại sao quá phức tạp? Sẽ không phải là README: README.md cat $ < > $ @. Tmp làm gì? :) – Ax3l

0

Giải pháp mẫu, dựa trên pn Câu trả lời của fceller: Điều duy nhất cần thiết là quy tắc xây dựng cho README trong makefile.am. Quy tắc này thậm chí có thể trống. Vì vậy, chỉ cần thêm dòng sau vào makefile.am của bạn:

README: README.md 

Đó là tất cả, bây giờ automake không phàn nàn nữa, và bạn không cần phải khai dự án của bạn như foreign.

Nó không phải là cần thiết, nhưng tôi thích một quy luật hoàn thiện hơn, tôi thêm vào makefile.am:

README: README.md 
    pandoc -f markdown -t plain --wrap=none $< -o [email protected] 

CLEANFILES = README 

Nhưng ngay cả với nguyên tắc này, README không được xây dựng, trừ khi bạn gọi một cách rõ ràng make README.

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