2010-05-29 30 views
16

Tôi đang thử dùng lighttpd cho dự án Linux được nhúng. Tôi đã nhận được gói nguồn mới nhất và bắt đầu viết một Makefile chính gói gọn tất cả các cấu hình, biên dịch, cài đặt (để thử nghiệm) các công cụ vv.Autotools: cách xóa các tệp được tạo bởi "./configure" trong dự án lighttpd?

Và ngược lại, tôi muốn dọn dẹp từng bước. Sau khi dọn dẹp, không còn tệp được tạo nữa. Điều này rất quan trọng cho việc kiểm tra lặp đi lặp lại.

Tôi tự hỏi nếu có cách nào để làm sạch hoàn toàn những gì đã tạo ra ./configure? Tôi không quen thuộc với chi tiết autotools.

Bất kỳ gợi ý nào?

+0

Bạn có cân nhắc sử dụng các công cụ từ phần mềm kiểm soát nguồn để nhận trạng thái sạch của các nguồn của mình không? –

+0

Vâng, hiện tại máy thử nghiệm (ảo) của tôi (bằng cách này, Ubuntu 10.04) không sử dụng điều khiển nguồn. – Andi

Trả lời

23

Cá nhân tôi thực sự sẽ sử dụng các tính năng của phần mềm điều khiển nguồn (bạn nên sử dụng một) cho điều này. Điều này sẽ làm sạch độc lập của quá trình xây dựng của bạn. Xem ví dụ svn-cleanup hoặc git clean.

Tuy nhiên, tự động cho phép một số tinh chỉnh khi xóa tệp nào. Điều này có (cố ý?) Được xây dựng trong những hạn chế về những tập tin được tạo ra bởi autotools có thể được gỡ bỏ theo cách này mặc dù. Hãy xem the definitions for MOSTLYCLEANFILES, CLEANFILES, DISTCLEANFILES, and MAINTAINERCLEANFILES và điều chỉnh số Makefile.am của bạn. Với họ, bạn có thể xóa nhiều nội dung với

make mostlyclean 
make clean 
make distclean 
make maintainer-clean 

Bạn sẽ không thể xóa ví dụ: Makefile hoặc .deps/ theo cách này.

Vì độ tin cậy của make clean, nên "hoạt động 100%" nếu bạn chỉ định rõ ràng tệp của mình và tránh xa sự can thiệp thủ công. Nếu không extend the cleanup rules.

+0

Cảm ơn Honk, tôi sẽ xem xét các phần được đề xuất trong tài liệu. Nếu thực hiện công việc sạch 99% và một vài tập tin nổi tiếng có thể được gỡ bỏ bằng tay, điều này sẽ ổn. Một câu hỏi khác nảy sinh: có thể chuyển hướng tất cả các kết quả được tạo ra tới một thư mục xây dựng được chỉ định (như CMake) không? Điều này sẽ hữu ích cho việc dọn dẹp và xây dựng cho các nền tảng khác nhau mà tôi đoán? – Andi

+0

Ok, có vẻ như một lệnh như "chế tạo sạch sẽ sạch sẽ sạch sẽ" sẽ thực hiện công việc! Một hiệu ứng vui nhộn là trong tệp tin lighttpd package 2 được sửa đổi bởi quá trình xây dựng: src/configparser.c và src/mod_ssi_exprparser.c. Nhưng chỉ có relatve mới có con đường. Có thể tệp này được tạo lại bởi quá trình xây dựng. Cảm ơn bạn, Honk! – Andi

+2

@Andi: sử dụng thư mục xây dựng rất giống với cmake: 'mkdir build && cd build && $ CONF_PATH/.configure && make' –

3

Ngoài Benjamin Bannier's answer, tên tệp được tạo có thể được liệt kê trong .gitignore tệp sao cho chúng bị bỏ qua, không được theo dõi bằng git và không gây khó chịu và phiền toái khi chạy git status. Bạn không thể xóa các tệp này bằng git clean. Trong trường hợp này, cá nhân tôi sử dụng lệnh rm -rf * ; git checkout ..

Nhưng đừng sử dụng điều đó nếu bạn có các tệp bị bỏ qua khác mà bạn không muốn bị xóa!

+3

Bạn ** có thể ** sử dụng 'git clean' để xóa các tập tin bị bỏ qua:' git clean -X'. –

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