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.