0

我正在尝试从新生成的文件夹中获取 .tar.gz 文件名(以上一步)。我尝试使用通配符,但没有运气,

在我的makefile中,我尝试了:

...
...
...
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!

我用 make -f makefile deb 运行它。

我总是从通配符中一无所获

但是如果我离开python生成的文件夹,重新运行上面的文件,我可以看到文件名被写入了控制台。有谁知道为什么?我应该如何获取文件名?我需要使用文件名并将文件名扩展到另一个文件名。

非常感谢!

4

1 回答 1

2

你没有这么明确地说,但我假设,因为你正在使用$(wildcard ...),你提供的行是 GNU make makefile 规则的一部分。在寻求帮助时,最好提供一个工作示例,而不仅仅是一小部分。

您遇到的问题是,在开始配方的第一行之前,make 在配方的所有行中扩展了所有变量和函数。所以即使$(wildcard ...)直到配方的第三行才出现,它在第一行运行之前就被扩展了。当$(wildcard ...)函数运行时,这些文件还不存在,所以它扩展为空。

你为什么不直接使用 shell globbing,因为无论如何你都在 shell 中?

python setup.py sdist
cd dist; ls -l
echo dist/*.tar.gz
于 2013-05-27T15:53:29.053 回答