Nama file saya memiliki parentesis, tildes, dll. Contoh: 'Per a què serveixen les equacions de segon grau?.md'.

Saya memiliki Makefile sederhana:

$ cat Makefile 
%.md.html: %.md
    echo $<
    ls $<

Ketika saya menjalankan make dengan makefile ini saya mendapatkan kesalahan ini:

$ make Per\ a\ què\ serveixen\ les\ equacions\ de\ segon\ grau\?.md.html
echo Per a què serveixen les equacions de segon grau?.md
Per a què serveixen les equacions de segon grau?.md
ls Per a què serveixen les equacions de segon grau?.md
ls: no s’ha pogut accedir a 'Per': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'a': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'què': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'serveixen': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'les': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'equacions': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'de': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'segon': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'grau?.md': El fitxer o directori no existeix
make: *** [Makefile:3: Per a què serveixen les equacions de segon grau?.md.html] Error 2

Karena nama file itu sendiri tidak lolos. Apakah ada cara untuk mengatakan sesuatu seperti: ls escape($<) di makefile saya? Mungkin memanggil perintah bash?

0
somenxavier 23 Juli 2020, 19:21

1 menjawab

Jawaban Terbaik

Untuk contoh khusus ini, mengutip variabel otomatis akan berfungsi:

echo "$<"
ls "$<"

Namun trik ini tidak berfungsi untuk variabel kosong opsional, atau variabel yang berisi banyak file. Karena bagaimana GNU Make menggunakan spasi putih sebagai pembatas dalam daftar, secara keseluruhan tidak cocok untuk menangani nama file dengan spasi putih di dalamnya.

1
Andreas 24 Juli 2020, 10:05