4 votes

GNU Make supporte-t-il '%' dans un nom de fichier ?

Dans GNU Make, est-il possible d'avoir une dépendance sur un fichier qui inclut un élément de type % dans le nom du fichier ? J'ai quelque chose comme ça :

foo: results(10%).dat
    gnuplot config.plt

Je peux bien sûr choisir un nom de fichier différent, mais il serait bon de savoir si % devrait toujours être évitée ou s'il existe un moyen simple d'y échapper (j'ai essayé de le faire). \ , \\ y %% sans succès).

Edita: Mes problèmes semblent plus subtils. Il semble que cela ne fonctionne pas à cause d'une combinaison de correspondance et d'un nom de fichier en pourcentage :

all: foo.txt bar.txt

PERCENT := %

foo%txt bar%txt: results(10$(PERCENT)).dat
    touch foo$*txt bar$*txt

Cela échoue mais si le nom de fichier n'a pas de caractère % c'est très bien.

2voto

Henno Brandsma Points 767

Vous pouvez essayer :

PERCENT := %
foo: results(10$(PERCENT)).dat
    gnuplot config.plt

(où les espaces avant gnuplot sont vraiment un personnage de tabulation).

1voto

user657267 Points 5796

Les caractères de pourcentage sont acceptables dans les règles normales comme la première règle que vous avez postée, elle devrait fonctionner telle quelle.

En ce qui concerne le deuxième exemple, il ne semble pas y avoir de raison de vouloir une règle de motif :

targets := foo.txt bar.txt

.PHONY: all
all: $(targets)

$(targets): results(10%).dat
    touch $(targets)

% peut être échappé dans statique règles du modèle

$(targets): %.txt: \%%.txt #dependencies will be %foo.txt and %bar.txt respectively

Mais il ne semble pas y avoir de moyen de s'échapper % dans une règle implicite comme dans votre deuxième exemple.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X