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.