2017-10-12 23 views
0

J'essaie de créer un Makefile avec le nom de fichier cible = nom de dossier. Au lieu de coder en dur, j'utilise la fonctionUtilisation de manipulations de variables dans Makefile

FILE=$(PWD##*/) 

J'ai aussi essayé FILE=$(echo PWD##*/) et FILE=$(echo $(PWD##*/)). Mais j'obtiens une erreur: référence de variable non-terminée. Je sais qu'il est difficile de faire de telles manipulations variables dans Makefile. Y at-il un travail autour?

Merci

+0

Pour clarifier la réponse de Andrew Gillis ci-dessous, makefiles ne sont pas des scripts shell, et vous ne pouvez pas utiliser la syntaxe du script shell directement lors de l'affectation de variables makefile. La syntaxe '## * /' fonctionne avec les variables _shell_, dans _shell scripts_. Cela ne fonctionnera pas avec make variables, dans les makefiles. – MadScientist

Répondre

1

Réglage FILE comme cela devrait fonctionner:

FILE = $(notdir $(PWD)) 

Une alternative est d'appeler à débourser pour faire la même chose:

FILE = $(shell basename \${PWD}) 
+0

Il a fonctionné la première fois mais quand j'ai essayé de le relancer: il dit la référence circulaire, la dépendance a chuté. – Learner27

+0

Cela signifie généralement qu'une cible a une dépendance et que cette dépendance dépend de la cible – gammazero

+0

En d'autres termes, cette erreur n'a rien à voir avec ce problème et vous n'avez montré aucune partie de votre fichier makefile qui aiderait à le diagnostiquer. Vous devriez essayer de le comprendre vous-même et si vous ne pouvez pas, ouvrez une nouvelle question avec plus de détails de votre makefile liés aux lignes référencées dans le message d'erreur de make. – MadScientist