Từ GNU make documentation
Các biên dịch lại phải được thực hiện nếu các tập tin nguồn, hoặc bất kỳ các tập tin tiêu đề đặt tên như phụ thuộc, là nhật thường xuyên hơn đối tượng tập tin, hoặc nếu đối tượng tập tin không tồn tại.
Nó không thay đổi Makefile của bạn kích hoạt nó.
make clean
xóa tất cả các tệp đối tượng đã được tạo trong thời gian chờ đợi. Thông thường, không cần phải biên soạn lại một phần, nghĩa là chỉ biên dịch lại các tệp bạn đã thay đổi và cuối cùng liên kết các tệp đối tượng mới được tạo với các tệp đã tồn tại trước đó. Tuy nhiên, nếu bạn muốn hoàn toàn an toàn, bạn nên chạy make clean
trước khi chạy lại make
.
Ví dụ về việc giữ các tệp đối tượng cũ (tức là không bao giờ chạy làm sạch) có thể trở thành vấn đề: Giả sử bạn có một tệp đối tượng đã tồn tại được liên kết với phiên bản 1.0 của một số thư viện. Bây giờ bạn cập nhật máy của bạn và điều này sẽ cài đặt phiên bản 1.1 trên nó, trong đó một số chức năng không tương thích với chức năng 1.0. Nhưng kể từ khi tập tin đối tượng của bạn được biên dịch mong đợi phiên bản trước, quá trình liên kết cuối cùng sẽ thất bại.
Tôi không bị thuyết phục bởi ví dụ của bạn. Nếu một bản cập nhật cho một thư viện thay đổi giao diện của nó, thì bạn sẽ phải thực hiện các thay đổi đối với mã của bạn, điều này sẽ gây ra sự biên dịch lại các đối tượng bị ảnh hưởng. Vì vậy, không cần phải "làm sạch" ở đó. – eriktous
Không nhất thiết - nếu phần còn lại của các tệp bạn đang làm việc sẽ không dựa vào thư viện cụ thể đó, các đối tượng bị ảnh hưởng sẽ không được biên dịch lại. – emboss
Nếu bất kỳ đối tượng nào không tương thích với thư viện mới, nguồn của chúng sẽ được thay đổi để phản ánh các thay đổi trong giao diện. Làm một 'làm sạch' sẽ không làm cho nó biến mất, và liên kết sẽ vẫn thất bại. – eriktous