J'ai besoin de trouver récursivement tous les fichiers d'en-tête dans une liste de répertoires. Je ne peux pas comprendre comment échapper à la commande correctement. J'ai cherché autour et trouvé diverses informations sur l'évasion dans les fichiers makefile mais je n'ai pas été capable de résoudre ce problème.Comment faire pour échapper backslash dans la fonction de shell makefile
En bash ce qui suit fait ce que je veux:
find path1 path2 path3 -type f \(-name *.hpp -o -name *.h -o *.hxx \)
Dans mon Makefile j'ai essayé quelques combinaisons de foreach, etc. Actuellement, j'ai ceci:
INCLUDE_PATHS ?= path1 path2 path3
MY_HEADERS := $(shell find $(INCLUDE_PATHS) -type f \(-name *.h -o -name *.hpp -o -name *.hxx \))
Ce produit:
find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]
Si je regarde juste pour une extension telle que « * .hpp » il fonctionne très bien (je suppose parce que le \ (... \) est pas besoin).
J'ai essayé différentes combinaisons de $, », ». \ Pour échapper aux « \ » caractères dans la commande shell sans succès.
Toute aide serait grandement appréciée.
Oops ... Je voulais dire backslash dans le titre. – sjacobs