Skip to main content

Memahami Unix dan Linux Command: make

bagian#3 Belajar Command Line Interface Linux BASH (Juni 2025)

bagian#3 Belajar Command Line Interface Linux BASH (Juni 2025)
Anonim

Tujuan dari utilitas make adalah untuk menentukan secara otomatis bagian mana dari program besar yang perlu dikompilasi ulang dan mengeluarkan perintah untuk mengkompilasi ulang mereka. Manual ini menjelaskan implementasi GNU make, yang ditulis oleh Richard Stallman dan Roland McGrath. Contoh-contoh ini menunjukkan program C karena mereka paling umum, tetapi Anda dapat menggunakan make dengan bahasa pemrograman yang kompilernya dapat dijalankan dengan perintah shell. Bahkan, make tidak terbatas pada program. Anda dapat menggunakannya untuk mendeskripsikan setiap tugas di mana beberapa file harus diperbarui secara otomatis dari orang lain setiap kali yang lain berubah.

Catatan: Halaman ini adalah ekstrak dokumentasi pembuatan GNU . Terkini hanya sesekali karena proyek GNU tidak menggunakan nroff. Untuk dokumentasi lengkap saat ini, lihat file info make.info yang dibuat dari file sumber Texinfo make.texinfo.

Sintaks dan persiapan utilitas make

membuat -f makefile pilihan … target …

Untuk bersiap menggunakan make, Anda harus menulis file bernama makefile yang menggambarkan hubungan antar file di program Anda dan menyatakan perintah untuk memperbarui setiap file. Biasanya file yang dapat dieksekusi diperbarui dari file objek, yang pada gilirannya dibuat dengan mengkompilasi file sumber.

Setelah makefile yang cocok ada, setiap kali Anda mengubah beberapa file sumber perintah shell sederhana ini membuat cukup untuk melakukan semua rekompilasi yang diperlukan. Program make menggunakan basis data makefile dan waktu modifikasi terakhir dari file untuk memutuskan file mana yang perlu diperbarui. Untuk masing-masing file tersebut, ia mengeluarkan perintah yang dicatat dalam database.

Utilitas make menjalankan perintah di makefile untuk memperbarui satu atau lebih nama target, di mana nama biasanya adalah sebuah program. Jika tidak-f ada opsi, make akan mencari makefileGNUmakefile, makefile, danMakefile, dalam urutan itu.

Biasanya Anda harus memanggil makefile Anda baik makefile atau Makefile. (Disarankan untuk menggunakan Makefile karena tampak jelas dekat awal daftar direktori, tepat di dekat file penting lainnya sepertiBaca aku.) Nama-diperiksa pertama, GNUmakefile, tidak dianjurkan untuk sebagian besar makefile. Anda harus menggunakan nama ini jika Anda memiliki makefile yang khusus untuk GNU dan tidak akan dipahami oleh versi make yang lain. Jika makefile adalah -, masukan standar dibaca.

Itu membuat utilitas memperbarui target jika itu tergantung pada prasyarat file yang telah dimodifikasi sejak target terakhir diubah, atau jika target tidak ada.

Pilihan

Itu -b dan -m opsi diabaikan untuk kompatibilitas dengan versi pembuatan lainnya.

-C dir akan berubah menjadi dir direktori sebelum membaca makefile atau melakukan hal lain. Jika banyak-C opsi ditentukan, masing-masing diinterpretasikan relatif dengan yang sebelumnya:-C/ -C dll setara dengan-C / etc. Ini biasanya digunakan dengan permintaan rekursif dari make.

Itu -d pilihan akan mencetak informasi debugging selain pemrosesan normal. Informasi debugging mengatakan file mana yang sedang dipertimbangkan untuk dibuat ulang, kali file mana yang dibandingkan dan dengan hasil apa, file mana yang perlu dibuat ulang, aturan implisit mana yang dipertimbangkan dan mana yang diterapkan - semua yang menarik tentang bagaimana memutuskan apa yang harus dilakukan .

Itu -e opsi memberikan variabel yang diambil dari lingkungan diutamakan atas variabel dari makefile.

Itu -f mengajukan menggunakan opsi mengajukan sebagai makefile.

Itu -saya opsi mengabaikan semua kesalahan dalam perintah yang dieksekusi untuk membuat ulang file.

Itu -SAYA dir opsi menentukan direktori dir untuk mencari termasuk makefile. Jika beberapa-SAYA opsi digunakan untuk menentukan beberapa direktori, direktori dicari dalam urutan yang ditentukan. Tidak seperti argumen untuk bendera lain dari make, direktori diberikan dengan-SAYA bendera dapat datang langsung setelah bendera:-Idir diizinkan, serta-I dir . Sintaks ini diperbolehkan untuk kompatibilitas dengan preprocessor C's-SAYA bendera.

Itu -j pekerjaan opsi menentukan jumlah pekerjaan (perintah) untuk dijalankan secara bersamaan. Jika ada lebih dari satu-j pilihan, yang terakhir efektif. Jika itu-j pilihan diberikan tanpa argumen, make tidak akan membatasi jumlah pekerjaan yang bisa dijalankan secara bersamaan.

Itu -k pilihan terus sebanyak mungkin setelah kesalahan; sementara target yang gagal, dan mereka yang bergantung padanya, tidak dapat dibuat ulang, dependensi lain dari target ini dapat diproses semua sama.

Itu -l dan -l beban Pilihan menentukan bahwa tidak ada pekerjaan baru (perintah) yang harus dimulai jika ada pekerjaan lain yang berjalan, dan rata-rata beban setidaknyabeban (angka floating-point). Tanpa argumen, itu menghilangkan batas beban sebelumnya.

Itu -n pilihan mencetak perintah yang akan dieksekusi, tetapi tidak mengeksekusi mereka.

Itu -Hai mengajukan opsi tidak membuat ulang mengajukan meskipun lebih tua dari ketergantungannya, dan tidak membuat ulang apa pun karena perubahan mengajukan . Pada dasarnya file diperlakukan sebagai sangat tua dan aturannya diabaikan.

Itu -p pilihan mencetak database (aturan dan nilai variabel) yang dihasilkan dari membaca file makefile. Kemudian dijalankan seperti biasa atau sebagaimana ditentukan lain.Ini juga mencetak informasi versi yang diberikan oleh-v beralih (lihat di bawah). Untuk mencetak database tanpa mencoba membuat ulang file apa pun, gunakanmembuat -p -f / dev / null .

Itu -q opsi set mode pertanyaan. Jangan menjalankan perintah apa pun atau mencetak apa pun, cukup kembalikan status keluar yang nol jika target yang ditentukan sudah diperbarui, selain itu sebaliknya.

Itu -r pilihan menghilangkan penggunaan aturan implisit built-in. Juga membersihkan daftar default dari sufiks untuk aturan akhiran.

Itu -s pilihan membungkam operasi. Itu tidak mencetak perintah saat dieksekusi.

Itu -S opsi membatalkan efek dari-k pilihan. Ini tidak pernah diperlukan kecuali dalam membuat rekursif dimana-k mungkin diwariskan dari make tingkat atas melalui MAKEFLAGS atau jika Anda menetapkan-k dalam MAKEFLAGS di lingkungan Anda.

Itu -t opsi menyentuh file (menandainya up to date tanpa benar-benar mengubahnya) daripada menjalankan perintahnya. Ini digunakan untuk berpura-pura bahwa perintah-perintah itu dilakukan, untuk membodohi pemanggilan di masa depan.

Itu -v pilihan mencetak versi program make ditambah hak cipta, daftar penulis, dan pemberitahuan bahwa tidak ada jaminan.

Itu -w pilihan mencetak pesan yang berisi direktori kerja sebelum dan sesudah pemrosesan lainnya. Ini mungkin berguna untuk melacak kesalahan dari sarang rumit rekursif perintah.

Itu -W mengajukan pilihan berpura-pura bahwa target mengajukan baru saja dimodifikasi. Saat digunakan dengan-n flag, ini menunjukkan kepada Anda apa yang akan terjadi jika Anda memodifikasi file itu. Tanpa-n, hampir sama dengan menjalankan asentuh perintah pada file yang diberikan sebelum menjalankan make, kecuali bahwa waktu modifikasi hanya diubah dalam imajinasi make.