Saya membaca beberapa tutorial tentang Makefiles tetapi bagi saya masih belum jelas untuk apa target "semua" berdiri dan apa fungsinya.
Ada ide?
Saya membaca beberapa tutorial tentang Makefiles tetapi bagi saya masih belum jelas untuk apa target "semua" berdiri dan apa fungsinya.
Ada ide?
Jawaban:
Sebuah build, seperti yang dipahami Makefile, terdiri dari banyak target. Misalnya, untuk membangun proyek yang mungkin Anda butuhkan
Jika Anda menerapkan alur kerja ini dengan makefile, Anda bisa membuat setiap target secara terpisah. Misalnya, jika Anda menulis
make file1.o
itu hanya akan membangun file itu, jika perlu.
Nama all
tidak tetap. Itu hanya nama konvensional; all
target menunjukkan bahwa jika Anda memanggilnya, make akan membangun semua yang dibutuhkan untuk membuat bangunan lengkap . Ini biasanya merupakan target dummy, yang tidak membuat file apa pun, tetapi hanya bergantung pada file lainnya. Untuk contoh di atas, membangun semua yang diperlukan adalah membuat file yang dapat dieksekusi, file lain ditarik sebagai dependensi. Jadi di makefile terlihat seperti ini:
all: executable1 executable2
all
target biasanya yang pertama di makefile, karena jika Anda hanya menulis make
di baris perintah, tanpa menentukan target, itu akan membangun target pertama. Dan Anda mengharapkannya all
.
all
biasanya juga menjadi .PHONY
target. Pelajari lebih lanjut di sini .
Manual untuk GNU Make memberikan definisi yang jelas all
dalam daftar target standarnya .
Jika pembuat Makefile mengikuti konvensi itu maka targetnya all
harus:
make
harus melakukan hal yang sama make all
.Untuk mencapai 1 all
biasanya didefinisikan sebagai .PHONY
target yang bergantung pada executable yang membentuk seluruh program:
.PHONY : all
all : executable
Untuk mencapai 2 all
harus menjadi target pertama yang ditentukan dalam file make atau ditetapkan sebagai tujuan default:
.DEFAULT_GOAL := all
Tidak yakin itu berarti sesuatu yang istimewa. Ini hanya konvensi yang Anda berikan aturan 'semua', dan umumnya digunakan untuk membuat daftar semua sub-target yang diperlukan untuk membangun keseluruhan proyek, oleh karena itu dinamai 'semua'. Satu-satunya yang spesial dari itu adalah sering kali orang akan memasukkannya sebagai target pertama di makefile, yang artinya hanya mengetik 'make' saja akan melakukan hal yang sama dengan 'make all'.
Target "semua" adalah contoh target tiruan - tidak ada apa pun di disk yang disebut "semua". Ini berarti bahwa ketika Anda melakukan "make all", make selalu berpikir bahwa ia perlu membangunnya, dan mengeksekusi semua perintah untuk target itu. Perintah-perintah itu biasanya akan menjadi perintah yang membangun semua produk akhir yang diketahui oleh makefile, tetapi itu bisa melakukan apa saja.
Contoh lain dari target dummy adalah "clean" dan "install", dan mereka bekerja dengan cara yang sama.
Jika Anda belum membacanya, Anda harus membaca GNU Make Manual , yang juga merupakan tutorial yang sangat baik.