Đối với các dự án đơn giản, makefiles cung cấp những gì cho các tập lệnh bash đơn giản trên đường băng?


7

Ví dụ: nếu tôi đang phát triển một trang web chỉ dành cho người dùng, tôi có thể có một số trang web Cà phê tập tin, một số Sass tệp, một số tệp HTML và một vài hình ảnh.

Các tệp CoffeeScript cần được biên dịch thành JavaScript, các tệp Sass cần được biên dịch thành CSS và các tệp mới này cần được thu nhỏ. Các hình ảnh cần siêu dữ liệu của họ loại bỏ. Tất cả các tệp kết quả cần phải được chuyển đến một thư mục mới với cấu trúc riêng.

Không ai trong số này có vẻ đặc biệt phức tạp, nhưng tôi đã thấy một số người sử dụng trang điểm cho điều này

Tôi có quá miễn cưỡng khi học cách sử dụng makefiles không? Những lợi thế họ có thể cung cấp trên một tập lệnh bash đơn giản?

Câu trả lời:


6

Vì vậy, bạn đúng rằng đây không phải là một nhiệm vụ lớn, những lợi thế được tạo ra ngay bây giờ

  • Như Ignacio nói thực hiện là xây dựng song song nhận thức. Sử dụng -j cờ.

  • Nếu bạn đã bày tỏ sự phụ thuộc của bạn một cách chính xác, đừng bao giờ xây dựng lại những thứ không cần đến nó. Chắc chắn, bạn có thể có được điều đó trong một tập lệnh bash, nhưng điều đó có nghĩa là thêm độ phức tạp vào tập lệnh (và tôi phải đọc trang hướng dẫn để nhớ cách thức) mà đã biết về điều đó.

  • Bạn có thể xác định quy tắc chung (quy tắc hậu tố (kiểu cũ) hoặc quy tắc mẫu (được ưu tiên trong GNU make)) hoạt động trên tất cả các tệp thuộc loại Bar cần được xây dựng từ loại Foo. Một lần nữa, một vòng lặp sẽ xử lý điều đó trong bash, nhưng đã biết cách làm điều đó.

Nhưng lớn lợi thế là: nếu nhiệm vụ trở nên phức tạp hơn, bạn sẽ tạo ra sự phát triển chậm và đơn giản, trong khi kịch bản của bạn có thể xuất hiện bất ngờ.

Nếu bạn có thể lập trình (nhiều hơn hoặc ít hơn) bạn có thể quản lý (nghĩ rằng ngôn ngữ có thể hơi kỳ lạ lúc đầu).


4

Makefiles cho phép song song dễ dàng. Vì make được (thực hiện) nhận thức được các phụ thuộc, nó có thể sắp xếp các công việc theo cách sao cho tất cả các lõi trên hệ thống được sử dụng hiệu quả nhất có thể.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.