Mengapa Makefile?
Mengompilasi file kode sumber bisa melelahkan, terutama jika Anda harus menyertakan beberapa file sumber dan mengetikkan perintah kompilasi setiap kali Anda perlu mengompilasi. Makefiles adalah solusi untuk menyederhanakan tugas ini.
Makefile adalah file format khusus yang membantu membangun dan mengelola proyek secara otomatis.
Misalnya, anggaplah kita memiliki file sumber berikut.
- main.cpp
- hello.cpp
- factorial.cpp
- functions.h
main.cpp
Berikut ini adalah kode untuk file sumber main.cpp -
#include <iostream>
using namespace std;
#include "functions.h"
int main(){
print_hello();
cout << endl;
cout << "The factorial of 5 is " << factorial(5) << endl;
return 0;
}
hello.cpp
Kode yang diberikan di bawah ini adalah untuk file sumber hello.cpp -
#include <iostream>
using namespace std;
#include "functions.h"
void print_hello(){
cout << "Hello World!";
}
factorial.cpp
Kode untuk factorial.cpp diberikan di bawah ini -
#include "functions.h"
int factorial(int n){
if(n!=1){
return(n * factorial(n-1));
} else return 1;
}
functions.h
Berikut ini adalah kode untuk fnctions.h -
void print_hello();
int factorial(int n);
Cara mudah untuk mengkompilasi file dan mendapatkan file yang dapat dieksekusi, adalah dengan menjalankan perintah -
gcc main.cpp hello.cpp factorial.cpp -o hello
Perintah ini menghasilkan hello biner. Dalam contoh ini kami hanya memiliki empat file dan kami tahu urutan pemanggilan fungsi. Oleh karena itu, adalah layak untuk mengetik perintah di atas dan menyiapkan biner akhir.
Namun, untuk proyek besar yang memiliki ribuan file kode sumber, akan menjadi sulit untuk mempertahankan build biner.
Itu makeperintah memungkinkan Anda untuk mengelola program besar atau kelompok program. Saat Anda mulai menulis program besar, Anda melihat bahwa kompilasi ulang program besar membutuhkan waktu lebih lama daripada kompilasi ulang program pendek. Selain itu, Anda memperhatikan bahwa Anda biasanya hanya bekerja pada sebagian kecil program (seperti fungsi tunggal), dan banyak program yang tersisa tidak berubah.
Di bagian selanjutnya, kita melihat bagaimana menyiapkan makefile untuk proyek kita.