0

我正在尝试从 makefile 编写规则文件(makefile),我使用 echo 命令来执行此操作,但是当我使用 $ 进行操作时,我无法弄清楚如何正确执行此操作。

我试过了 :

$(shell echo -e "#!/usr/bin/make -f \nPYTHON3=\"$(shell py3versions -vr)\"" >>text.txt

但我收到错误消息说:

 py3versions: error parsing Python-Version attribute

我要写入规则文件的代码:

 #!/usr/bin/make -f 

 PYTHON3=$(shell py3versions -vr)

 %:
     dh $@   python3 --buildsystem=python_distutils

 override_dh_auto_build: $(PYTHON3:%=build-python%)

 ......

任何人都可以就我应该使用哪个命令来创建此类文件提出一些建议?如果使用 echo 命令,输入 $ 的方法是什么?

要更新我的情况:

我正在尝试构建一个 python debian 包。上面显示的规则文件是构建它的方法。(当然在调用其他函数之后

python  setup.py sdist 

py2dsc,

然后这个规则(它被称为规则而不是makefile)文件将被调用来构建debian包。

规则文件可以通过 py2dsc 命令自动生成,但我需要对其进行修改以使其适用于不同版本的 python(例如,python2.* 和 python3.*)。所以我想只为 python2.* 和 python3.* 编写 makefile 的规则文件(它将调用 python setup.py sdist 和 py2dsc 以及这个规则文件)。

现在我面临的问题是:如何将 shell 命令以它的方式写入规则文件。非常感谢!

4

1 回答 1

2

使用两个美元符号 ( $$) 从 make 中转义美元符号:

all:
         @echo 'VAR = $$VAR'

顺便说一句,$(shell ...)我不认为你不应该使用它。您没有给出您的 makefile 的完整示例,但如果您的echo命令是配方的一部分,请直接编写它,不要使用$(shell ...).

另外请注意:echo -e不可移植,并且不适用于所有 POSIX 系统。我建议您改用printf它,它可以做同样的事情并且是可移植的。

于 2013-06-03T14:39:43.373 回答