Tôi đã có một makefile nhẹ hackish cho chạy thử nghiệm:Tại sao GNU làm xóa một tập tin
### Run the tests
tests := tests/test1 tests/test2 ...
test: $(tests)
$(tests): %: %.c
gcc -o [email protected] $(testflags) $<
[email protected]
Nó hoạt động, nhưng nó làm Hãy làm điều gì đó tôi chưa bao giờ nhìn thấy nó làm trước. Thử nghiệm của tôi hiện bị hỏng và gây ra lỗi xe buýt. Cung cấp cho kết quả sau:
gcc -o tests/test1 [flags blah blah] tests/test1.c
tests/test1
make: *** [tests/test1] Bus error
make: *** Deleting file `tests/test1'
Tôi tò mò về dòng cuối cùng. Tôi chưa bao giờ thấy Make làm điều đó trước đây. Tại sao xóa bài kiểm tra đã biên dịch?
Lưu ý: Tôi đã chỉnh sửa ví dụ này khá nhiều để làm cho nó đơn giản hơn. Tôi có thể đã giới thiệu một số sai lầm.
+1 là câu trả lời duy nhất để chỉ ra rằng hành vi đã được gây ra bởi một tệp makefile lỗi kết hợp tạo chương trình thử nghiệm và chạy nó thành một quy tắc duy nhất. –
IMO đây là giải pháp tốt hơn: sạch hơn, và nhiều hơn nữa "làm cho giống như". Mặc dù, các chi tiết có thể được xử lý sạch hơn. Đầu tiên tác giả makefile phải quyết định: bạn có muốn _always_ chạy các kiểm tra hay chỉ chạy các kiểm tra nếu tệp thử nghiệm được xây dựng lại (sau này là ví dụ ban đầu đã làm). – MadScientist