Reputation: 1557
My file names have parentesis, tildes, etc. Example: 'Per a què serveixen les equacions de segon grau?.md'
.
I have a simple Makefile:
$ cat Makefile
%.md.html: %.md
echo $<
ls $<
When I run make with this makefile I get this error:
$ 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
because the filename itself is not escaped. Is there anyway to say something like: ls escape($<)
in my makefile? Perhaps calling a bash command?
Upvotes: 0
Views: 148
Reputation: 5301
For this particular example, quoting the automatic variable's will work:
echo "$<"
ls "$<"
However this trick doesn't work for optionally empty variables, or variables containing multiple files. Because of how GNU Make uses whitespace as delimiter in lists it's overall unsuited for dealing with filenames with whitespace in them.
Upvotes: 1