0Pricing
C Academy · Pelajaran

Makefile

Otomatiskan build.

Makefile adalah pelajaran C Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C Academy mencakup 4 pelajaran total.

Mengapa Menggunakan Makefile

Mengetik perintah gcc secara manual akan segera menjadi sulit dikelola. make membaca Makefile yang menjelaskan cara membangun proyek Anda, lalu hanya menjalankan perintah yang diperlukan.

Keunggulan utamanya: make hanya membangun ulang berkas jika masukan berkas tersebut lebih baru daripada keluarannya, sehingga menghemat banyak waktu kompilasi.

Anatomi Aturan

Sebuah aturan memiliki tiga bagian: sasaran, prasyarat, dan resep.

Baris resep MUST diawali karakter TAB yang sebenarnya, bukan spasi. Ini adalah kesalahan Makefile yang paling sering terjadi.

target: prerequisite1 prerequisite2
	<TAB>command to build target

Makefile Pertama

Makefile ini membangun app dari dua berkas sumber. Menjalankan make tanpa argumen akan membangun sasaran pertama.

Jika tidak ada sumber yang berubah sejak pembangunan terakhir, make mencetak 'up to date' dan tidak melakukan apa pun.

app: main.c math_utils.c
	gcc main.c math_utils.c -o app

Aturan Kompilasi Terpisah

Membangun setiap objek secara terpisah berarti perubahan pada satu berkas hanya mengompilasi ulang berkas tersebut.

make mengikuti graf dependensi: ubah main.c, dan hanya main.o serta penautan akhir yang dijalankan ulang.

app: main.o math_utils.o
	gcc main.o math_utils.o -o app

main.o: main.c math_utils.h
	gcc -c main.c

math_utils.o: math_utils.c math_utils.h
	gcc -c math_utils.c

Variabel

Variabel menghilangkan pengulangan. Definisikan variabel di bagian atas, lalu perluas nilainya dengan $(NAME).

Sekarang, mengganti kompiler atau bendera cukup dilakukan di satu tempat.

CC = gcc
CFLAGS = -Wall -Wextra -g

app: main.o math_utils.o
	$(CC) main.o math_utils.o -o app

Variabel Otomatis

make menyediakan singkatan di dalam resep:

  • $@ — nama sasaran
  • $^ — semua prasyarat
  • $< — prasyarat pertama

Singkatan ini membuat resep tetap singkat dan benar.

app: main.o math_utils.o
	$(CC) $^ -o $@

main.o: main.c
	$(CC) $(CFLAGS) -c $< -o $@

Aturan Pola

Satu aturan pola mengompilasi setiap .c menjadi .o, sehingga Anda tidak perlu lagi menulis satu aturan untuk setiap berkas.

% mencocokkan bagian nama apa pun; jika digabungkan dengan $< dan $@, aturan ini sepenuhnya umum.

%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@

Sasaran Phony

Sasaran seperti clean tidak menghasilkan berkas dengan nama tersebut. Deklarasikan sasaran itu sebagai .PHONY agar make selalu menjalankannya, meskipun ada berkas bernama 'clean'.

clean menghapus hasil pembangunan untuk memaksa pembangunan ulang dari awal.

.PHONY: clean
clean:
	rm -f *.o app

Makefile Lengkap

Menggabungkan semuanya: variabel, aturan pola, aturan penautan, dan clean phony.

Struktur ini dapat menangani banyak berkas tanpa perubahan per berkas.

CC = gcc
CFLAGS = -Wall -Wextra -g
OBJS = main.o math_utils.o

app: $(OBJS)
	$(CC) $^ -o $@

%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@

.PHONY: clean
clean:
	rm -f $(OBJS) app

Cara make Menentukan Tindakan

make membandingkan cap waktu. Sasaran akan dibangun ulang jika waktu modifikasi salah satu prasyarat lebih baru, atau jika sasaran belum ada.

Inilah alasan mencantumkan dependensi header itu penting: edit sebuah header dan setiap objek yang bergantung padanya akan dibangun ulang dengan benar.

Beberapa Sasaran dan Sasaran Bawaan

Sasaran pertama dalam Makefile adalah sasaran bawaan yang dijalankan saat Anda mengetik make biasa. Berdasarkan konvensi, namanya adalah all.

Anda juga dapat membangun sasaran tertentu berdasarkan namanya, seperti make clean atau make test, sehingga satu Makefile memiliki banyak titik masuk yang berguna.

.PHONY: all
all: app

test: app
	./app --selftest

Pemeriksaan Singkat

Diagnosisilah galat Makefile klasik.

Rangkuman

Sekarang Anda dapat mengotomatiskan pembangunan dengan make:

  • Aturan terdiri dari sasaran, prasyarat, dan resep yang diawali TAB
  • Variabel dan variabel otomatis ($@ $^ $<) mengurangi pengulangan
  • Aturan pola (%.o: %.c) menangani setiap berkas secara umum
  • .PHONY menandai sasaran yang bukan berkas, seperti clean
  • make hanya membangun ulang bagian yang sudah kedaluwarsa berdasarkan cap waktu

Berikutnya: membangun pustaka statis dan pustaka bersama.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Makefile” gratis?

Ya — teks lengkap “Makefile” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C Academy, upgrade ke CoddyKit PRO. Kursus C Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Makefile”?

Otomatiskan build. Kamu berlatih C Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C Academy?

Tidak diperlukan pengalaman sebelumnya. C Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Makefile” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C Academy ini?

Ya. Setiap pelajaran C Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Kompilasi Kondisional
  2. Proyek Banyak File
  3. Makefile
  4. Pustaka Statis dan Bersama
← Kembali ke C Academy