Make
Make nədir?
Make-i Stuart Feldman Bell Labs-da 1976-cı ildə yazıb. Məqsəd hər şeyi yenidən qurmamaq idi. Makefile hədəf, asılılıq və əmr saxlayır. Hədəf alınan faylın adıdır. Asılılıq həmin fayldan əvvəl hazır olması lazım olan fayldır. Əmr sətirinin əvvəli boşluq deyil, tab olmalıdır. Boşluq yazılsa Make dayanır. Linux-da geniş işlənən variant GNU Make-dir. O, köhnə Make-in üstünə öz əlavələrini qoyur. Əmrin özü başqa proqramdır: kompilyator, skript və ya surət.
Make nə üçün istifadə olunur?
Make böyük layihədə yalnız dəyişən hissəni yenidən qurmaq üçündür. Kiçik təkrar əmri də bir hədəfə bağlaya bilər.
- C proqramında yalnız dəyişən faylı yenidən qurmaq
- Testi bir hədəf adı ilə açmaq
- Təmizlik əmrini ayrıca hədəf etmək
- Bir neçə addımı bir ad altında saxlamaq
Make ilə nə etmək olar?
Make ilə hədəfin köhnə olub-olmadığını yoxlayırsan. Fayl dəyişməyibsə əmri təkrar işlətmir. O, kompilyator deyil. Kompilyatoru sətirin içində çağırırsan. Səhv tab və ya səhv yol olanda qurma sakit və ya yarım qalır. Nəticəni Makefile-dan oxumaq lazımdır.
Make öyrənmək çətindirmi?
Bir hədəf yazmaq asandır. Çətinlik tab və asılılıqdadır. Boşluq tab kimi görünür, amma Make onu qəbul etmir. Asılılığı yazmamaq köhnə faylı yeni sayır və əmri buraxır. Eyni hədəf iki yerdədirsə sonuncu qayda işləyir. Saat səhvdirsə Make faylı təzə və ya köhnə sanır.
Üstünlükləri və məhdudiyyətləri
Üstünlük: dəyişməyən hissə təkrar qurulmur, qayda bir faylda durur, alət köhnə və genişdir. Məhdudiyyət: tab səhvi tez-tez olur və böyük Makefile çətin oxunur. Make Cargo və npm deyil. O, sənin yazdığın əmri vaxtı çatanda çağırır.
Əsas anlayışlar
Hədəf alınacaq addır. Asılılıq ondan əvvəl hazır olan fayldır. Əmr isə həmin addımın özüdür.
- Hədəf sətrin solunda durur
- Əmr tab ilə başlayır
- Dəyişməyən fayl yenidən qurulmur
- make adı verilən hədəfi işlədir
Qısa nümunə
Bu, bir proqramı iki obyekt faylından quran qısadır. Əmr sətirindəki boşluq tab olmalıdır.
app: main.o util.o gcc -o app main.o util.o
Tez-tez verilən suallar
- Make proqramlaşdırma dilidir? Xeyr. O, fayl köhnədirsə sənin əmrini çağırır.
- Make və Cargo eynidir? Xeyr. Cargo Rust üçündür. Make sənin yazdığın əmri hədəfə bağlayır.
- Əmr boşluqla başlaya bilər? Xeyr. Ənənəvi Make tab istəyir. Boşluq sətiri əmr saymır.