/ / wildcard ne fonctionne pas pour un nouveau dossier généré - linux, makefile, wildcard

le joker ne fonctionne pas pour un nouveau dossier généré - linux, makefile, joker

J'essaie d'obtenir un nom de fichier .tar.gz à partir d'un nouveau dossier généré (une étape ci-dessus). J'ai essayé d'utiliser un joker, mais sans succès,

Dans mon makefile, j'ai essayé:

...
...
...
other parts
...

deb:
python setup.py sdist   --- this step will generate a new folder called dist
cd dist; ls -l          --- from here, I see the file is shown.
echo $(wildcard dist/*.tar.gz)   (also tried dist/pylink*.tar.gz, dist/*.gz)  --fails!

Je le lance avec make -f makefile deb.

Je n'ai toujours rien eu de joker

Mais si je quitte le dossier généré par Python,et relancez le fichier ci-dessus, je peux voir que le nom du fichier est écrit sur la console. Quelqu'un sait pourquoi? Comment dois-je faire pour obtenir le nom du fichier? J'ai besoin d'utiliser le nom de fichier et d'étendre le nom de fichier à un autre.

Merci beaucoup!

Réponses:

2 pour la réponse № 1

Vous ne le dites pas explicitement, mais je suppose que, parce que vous utilisez $(wildcard ...), les lignes que vous fournissez font partie d’une règle GNU make makefile. Il est préférable de fournir un exemple concret, lorsque vous demandez de l’aide, et pas un petit détail.

Le problème que vous rencontrez est que make développe TOUTES les variables et fonctions de TOUTES les lignes de la recette, avant de commencer la première ligne de la recette. $(wildcard ...) n'apparaît pas jusqu'à la troisième ligne de la recette, elle est développée avant que la première ligne ne soit exécutée. Quand le $(wildcard ...) la fonction est exécutée, ces fichiers n’existent pas encore, elle ne se développe donc plus.

Pourquoi n'utilisez-vous pas simplement le shell globbing, puisque vous êtes dans un shell quand même?

python setup.py sdist
cd dist; ls -l
echo dist/*.tar.gz