GNU/Linux >> Belajar Linux >  >> Linux

Menggunakan Wildcard Di Gnu Membuat Aturan Pola?

Asumsikan doc.pdf adalah targetnya.

Aturan berikut memicu regenerasi doc.pdf kapanpun doc.refer diperbarui, tetapi juga senang ketika doc.refer tidak ada sama sekali:

doc.pdf: doc.mom $(wildcard doc.refer)
    pdfmom -e -k < $< > [email protected]

Namun aturan pola berikut tidak menyelesaikan hal yang sama (PDF dihasilkan dengan benar, tetapi pembangunan kembali tidak dipicu saat mengubah doc.refer ):

%.pdf: %.mom Makefile $(wildcard %.refer)
    pdfmom -e -k < $< > [email protected]

Saya menduga bahwa wildcard perintah dijalankan sebelum % karakter diperluas. Bagaimana saya bisa mengatasi ini?

Jawaban yang Diterima:

Fungsi GNU Make wildcard mengambil pola globbing Shell dan memperluasnya ke file yang cocok dengan pola itu. Pola %.refer tidak mengandung pola globbing shell.

Anda mungkin menginginkan sesuatu seperti

%.pdf: %.mom %.refer
        pdfmom -e -k < $< > [email protected]

%.pdf: %.mom
        pdfmom -e -k < $< > [email protected]

Target pertama akan dipanggil untuk membuat file PDF ketika ada .mom dan a .refer file yang tersedia untuk nama dasar dokumen. Target kedua akan dipanggil jika tidak ada .refer file tersedia.

Urutan target ini penting.


Linux
  1. Cetak Baris Sebelumnya Setelah Pencocokan Pola Menggunakan Sed?

  2. Temukan Hanya Kejadian Pertama Menggunakan Only Grep?

  3. Jadikan Vim sebagai IDE Perl Anda Menggunakan Plugin perl-support.vim

  1. Jadikan Vim sebagai Bash-IDE Anda Menggunakan Plugin dukungan bash

  2. Dapatkah Anda membuatnya? Kompilasi Program C di Linux Menggunakan Make Command

  3. Menggunakan output dari perintah sebelumnya di bash

  1. Buat permintaan https menggunakan soket di linux

  2. tar -C dengan pola file wildcard

  3. Paralel rsync menggunakan GNU Paralel