Ada tiga kegunaan yang tidak terkait di @
sini.
Dalam $@
, karakter @
adalah nama variabel otomatis yang dapat digunakan dalam suatu aturan. Nilai variabel itu adalah target yang dibuat oleh aturan.
Ketika @
digunakan di awal baris resep (perintah), tepat setelah karakter tab, itu menyebabkan perintah tidak akan dicetak saat akan dieksekusi.
Karakter di @
tempat lain tidak istimewa.
Jadi, dalam contoh Anda, untuk membangun program
:
- The
file
fungsi dipanggil. Itu menulis dependensi target ( $^
variabel otomatis) ke file program.in
.
Perintah apa pun yang disimpan dalam variabel CMD
dieksekusi, dengan parameter disimpan dalam variabel CMDFLAGS
, ditambah parameter tambahan @program.in
. Apa ini tergantung pada apa CMD
.
Perintah rm program.in
dijalankan, tanpa mencetaknya terlebih dahulu.
Beberapa perintah memperlakukan parameter yang dimulai dengan @
sebagai menunjukkan file dari mana untuk membaca lebih banyak parameter. Ini adalah konvensi DOS yang muncul karena DOS memiliki batasan ketat pada panjang baris perintah dan tidak ada cara untuk menginterpolasi output dari suatu perintah ke dalam baris perintah. Ini tidak biasa di dunia Unix karena Unix tidak memiliki batasan ini. Dengan demikian, efek resep tersebut kemungkinan sama dengan
$(CMD) $(CMDFLAGS) $(OBJECTS)
>$@.in
digunakan sebagai mode file ... tetapi ini berguna dengan caranya sendiri .. terima kasih cuonglm ...