🌱 Giới thiệu tổng quan về Makefile

🌱 Giới thiệu tổng quan về Makefile

    Đối với các chương trình nhỏ, các bạn quen để tất cả hàm trong một file main.c, nhưng khi gặp 1 chương trình lớn, nhiều driver, nhiều người viết, ... thì việc quản lý các file trong nhiều folders khác nhau sẽ gặp rất nhiều vấn đề.

    Trình biên dịch GCC cho phép build các file tuân thủ theo Build Process.

    Vì vậy, khi build và link các file trong các folder khác nhau, thì mỗi lần build/link ta đều tuần theo một kịch bản cố định, dù có sửa nội dung source code.

    👉 Người ta tạo ra một kịch bản để tối ưu hóa các quá trình trên => Makefile.

Nội dung bài viết

Makefile là gì?

Makefile là một dạng script file chứa các thông tin:

  • Project Structure (File, Dependencies).
  • Các lệnh để tạo files (Object files, elf/bin/hex files, ...).
  • Lệnh make để đọc nội dung makefile, hiểu cấu trúc project, và thực thi các lệnh.

Tools hỗ trợ Makefile

Cygwin/MingW/GNU Make/...

Tải Cygwin tại đây! => Khi cài các bạn nhớ chọn make rồi mới install.

Makefile Tools

👉 Từ GCC Command đến Makefile

    Để học Makefile thì cần có kiến thức về GCC và Command line, những điều đơn giản cần nhớ:

  • Lệnh cd, nhảy đến thư mục chỉ định
  • Dấu . là chỉ chỗ mình đang đứng :D Còn .. là back về một folder.

    Các bạn có thể đọc thêm về GCC Command tại đây!

    Thông thường các bạn sẽ cần chạy lệnh với của sổ cmd trên Window để tạo ra một file .exe từ một file source .c.

    Ví dụ "Helloworld" kinh điển:

Hello World Example

Công việc cần làm:

GCC Commands

    Nếu sử dụng GCC, một cách đơn giản là tuân thủ 3 bước: Tạo object file, sau đó tạo file .exe, rồi chạy file .exe này.

    Nếu project lớn, nhiều file, cần sửa đổi nhiều, thì sẽ phải chạy đi chạy lại các lệnh như vậy nhiều lần => Phiền => Hãy thử dùng Makefile.

Makefile Structure

    Makefile thực chất là tổng hợp các GCC Commands trong một script file (cấu trúc như hình trên).

    Để chạy Makefile trên, chúng ta có thể mở cmd lên, cd đến makefile, và chạy thử lệnh make (lệnh này sẽ cho chạy cả 3 dòng màu xanh main.o, build, run) => Kết quả sẽ là "Hello"

    Hoặc có thể chạy riêng từng dòng (từng option): "make main.o", "make build", "make run"

    Mỗi option & Câu lệnh tương ứng như vậy gọi là một Rule.

👉 Cấu trúc một Rule đơn giản trong Makefile

Makefile Rule Structure

  • prerequisites: Là các files cần thiết để tạo ra target
  • Target: Là file được hình thành sau quá trình make được thực hiện, hoặc một action name như build, run, ...
  • Action: Là câu lệnh Compile để tạo ra target từ prerequisites, hoặc thực hiện target. Action được thụt lùi vào 1 tab so với target.

    Ví dụ:

Makefile Example

    ➤ SOURCE CODE MẪU HELLO WORLD: DOWNLOAD!

    Trên thực tế makefile còn rất nhiều công dụng, makefile cung cấp một số function để có thể tổng quát hóa makefile khi triển khai một project lớn. Ngoài ra, nó còn cung cấp khả năng hiểu project, tạo các file dependency để khi có một sự thay đổi nhỏ trong project, thì chúng ta chỉ cần build lại những file bị thay đổi, từ đó giúp giảm thời gian compile của toàn chương trình.

    Hãy cùng mình tìm hiểu chi tiết hơn về makefile ở các bài viết và video sau nhé!

>>>>>> Follow ngay <<<<<<

Để nhận được những bài học miễn phí mới nhất nhé 😊

Chúc các bạn học tập tốt 😊

Đăng nhận xét

Mới hơn Cũ hơn