从makefile编写makefile的最佳方法是什么?

时间:2013-06-03 14:25:49

标签: python linux makefile

我正在尝试从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。*)。所以我想只是从makefile(它将调用python setup.py sdist和py2dsc以及这个规则文件)中编写规则文件,用于python2。*和python3。*。

现在我遇到了问题:如何以规则文件的方式编写shell命令。非常感谢!

1 个答案:

答案 0 :(得分:2)

使用两个美元符号($$)来逃避美元符号:

all:
         @echo 'VAR = $$VAR'

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

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