Bạn nên luôn luôn cố gắng để hiểu hệ thống xây dựng bạn đang sử dụng.
Điều đó không nhất thiết có nghĩa là bạn phải có thể tạo tất cả các tệp xây dựng bằng tay. Phần quan trọng là hiểu hệ thống xây dựng đang làm gì cho dự án của bạn và khả năng chung để biên dịch các dự án nhỏ theo cách thủ công (như trong "gõ lệnh trên thiết bị đầu cuối").
Tôi chỉ có xu hướng nghĩ rằng tạo Makefiles (đơn giản) là bước dễ nhất để hiểu những gì đang diễn ra, nhưng bạn có thể có những cách khác để hiểu cách xây dựng mọi thứ.
Tại sao / khi nào nên học Makefiles
Nếu bạn chỉ lập trình cho Windows và không mong đợi ai khác biên dịch mã của mình, vui lòng biên dịch mã theo cách bạn muốn.
Nếu bạn muốn lập trình bất khả tri của trình biên dịch (như trong "để người khác quyết định trình biên dịch hoặc IDE nào họ muốn sử dụng"), thì bạn nên tìm hiểu một hệ thống xây dựng khác thay vì chỉ để IDE của bạn "giải quyết".
Nếu bạn muốn lập trình cho các nền tảng khác nhau, thì bạn chắc chắn cần phải sử dụng một hệ thống xây dựng rộng rãi.
Điều đó vẫn không có nghĩa là bạn phải biết các Makefiles được tạo tự động hoạt động chi tiết như thế nào. Bạn chỉ cần biết làm thế nào các tập tin đầu vào cho hệ thống xây dựng hoạt động. Những điều này chỉ xảy ra để có một cú pháp tương tự đôi khi.
Cá nhân tôi thực sự thích Makefiles và sử dụng chúng cho nhiều thứ. Không chỉ biên dịch mã. Tôi tạo Makefile cho mọi pdf lớn hơn mà tôi tạo (với LaTeX) và mọi dự án tôi cần để tự động hóa một số tác vụ trong (xây dựng, đóng gói, tải lên, cập nhật phụ thuộc từ kho lưu trữ nguồn, sao lưu kéo / đẩy thủ công)
Tuy nhiên, tôi đang làm việc trên thiết bị đầu cuối rất nhiều và tôi đang làm việc với Linux. Tôi không sử dụng những gì bạn sẽ gọi một IDE khác ngoài vim (trình soạn thảo văn bản mạnh mẽ) và các công cụ điều khiển. Điều này có thể rất khác nhau đối với bạn.
Nếu bạn từng phàn nàn về việc phải chạy các lệnh lặp lại khác nhau chỉ để "cập nhật" / gói / tải lên / .. một "dự án", thì học cách viết Makefiles có thể là điều hữu ích cho bạn.
Nếu bạn có và sử dụng các công cụ / GUI / IDE cho mọi thứ, thì bạn có thể không nhận được gì từ kiến thức đó.