Selanjutnya kita akan mendemokan penggunaan sederhana dari make
. Make
adalah program yang dapat ditemukan di semua sistem Unix.
Make
membaca suatu deskripsi dari suatu proyek dari sebuah file make
(secara default disebut Makefile
di direktori tertentu). Makefile
menspesifikasikan serangkaian aturan kompilasi dalam bentuk target (seperti file eksekutabel) dan dependencies-nya (seperti file-file objek dan file-file sumber) dengan format seperti berikut :
target: dependencies
command
Untuk masing-masing target, make
memeriksa waktu modifikasi dari file-file dependency yang berhubungan untuk menentukan apakah target perlu dibangun ulang menggunakan perintah terkait. Catat bahwa baris command di sebuah makefile
mesti dipisahkan dengan TAB bukan dengan spasi.
GNU Make
berisi beberapa aturan bawaan, disebut sebagai aturan impilisit, untuk menyederhanakan konstruksi makefile
. Sebagai contoh, aturan tersebut menspesifikasikan bahwa file *.o dapat diperoleh dari file *.c melalui proses kompilasi, dan bahwa file eksekutabel dapat dibuat dengan menghubungkan file-file *.o satu sama lain. Aturan implisit didefinisikan dalam bentuk variabel ofmake
, seperti CC
(compiler C) dan CFLAGS
(opsi-opsi kompilasi untuk program C), yang dapat diset menggunakan baris VARIABLE=VALUE
di makefile. Untuk C++ variabel yang sama adalah CXX
dan CXXFLAGS
, sementara variabel make CPPFLAGS
mengatur opsi preprosessor. Aturan implisit dan user-defined secara otomatis dikaitkan satu sama lain sesuai kebutuhannya dengan GNU Make.
‘Makefile’ sederhana untuk proyek yang ada di tutorial awal kita dapat ditulis sebagai berikut :
CC=gcc
CFLAGS=-Wall
main: main.o hello_fn.o
clean:
rm -f main main.o hello_fn.o
File dapat dibaca seperti ini :
Menggunakan kompiler gcc
, dengan opsi kompilasi -Wall
, membuat file target eksekutabel main dari file-file objek main.o
dan hello_fn.o
(yang akan dibangun via aturan implisit dari main.c
dan hello_fn.c
). Target clean tidak memiliki dependencies dan secara sederhana menghapus semua file-file kompilasi. Opsi -f
(force) di perintah rm
memaksa laporan error apapun untuk tidak dihiraukan.
Untuk menggunakan makefile
, ketikkan make
. Ketika dilakukan tanpa argumen lain, target pertama dari makefile
adalah membangun, dan menghasilkan file eksekutabel bernama “main”.
$ make
gcc -Wall -c -o main.o main.c
gcc -Wall -c -o hello_fn.o hello_fn.c
gcc main.o hello_fn.o -o main
$ ./main
Hello, world!
Untuk membangun ulang eksekutabel setelah memodifikasi suatu file sumber, cukup ketikkan make
lagi. Dengan memeriksa timestamps dari target dan file-file dependency, make
mengindentifikasi file-file yang telah dirubah dan membangun kembali file-file yang diperlukan untuk mengupdate target.
$ emacs
main.c (edit the file)
$ make
gcc -Wall -c -o main.o main.c
gcc main.o hello_fn.o -o main
$ ./main
Hello, everyone!
Terakhir, untuk menghapus file yang telah dibuat, ketikkan make clean
:
$ make clean
rm -f main main.o hello_fn.o
makefile
yang lebih baik biasanya berisi target-target tambahan untuk instalasi (make install
) dan testing (make check
).
Bersambung .. (rezaervani@gmail.com)
Serial Sebelumnya
- Serial Tutorial C (1) : Compiling Program C dan C++
- Serial Tutorial C (2) : Opsi -Wall saat Kompilasi
- Serial Tutorial C (3) : Menggabungkan beberapa file saat kompilasi
- Serial Tutorial C (4) : Kompilasi File secara independen
- Serial Tutorial C (5) : Membuat File Objek dari File Sumber
- Serial Tutorial C (6) : Membuat Eksekutable File dari File Objek
- Serial Tutorial C (7) : Mengenal Struktur Program C
- Serial Tutorial C (8) : printf format identifiers
- Serial Tutorial C (9) : Latihan 1 – Membuat Program Pemangkatan
- Serial Tutorial C (10) : Membaca Input Keyboard dengan scanf()
Leave a Reply