如何在makefile中获取Python脚本返回值



有人可以帮助我找到一种从makefile中的python脚本捕获返回值的方法python脚本重新运行失败时构建错误。

mymakefile.mak

python mySample.py <arg1> <arg2>//在这里调用python脚本,如何获取脚本的返回值?

mySample.py

SUCCESS 0
FAIL 1
if(true)
  exit(SUCCESS)
else:
  exit(FAIL)

预先感谢。

如果您的Python脚本以非零代码退出,make将检测到这一点,并告诉您发生错误。因此,您无需做任何其他事情。

示例,如果我有一个可以执行此操作的程序foo.py

print 'running foo'
exit(1)

Makefile这样:

foo:
    python foo.py

我运行 make foo,我得到输出:

python foo.py

运行foo

make:*** [foo]错误1

因此它检测到了错误。


另一方面,您要做的是在makefile中记录命令的返回值,您可以使用$?变量,该变量存储命令的最后一个返回值。

有几件事要注意:

  • 必须将美元符号逃脱到makefile中,因此在命令中变成$$?
  • 由于makefile中的每个命令都是在单独的外壳中运行的,因此您必须在与您正在运行的命令相同的子壳中捕获输出(即使与您关心的命令的输出捕获部分相同)

示例:

build:
    python mySample.py ; echo $$? > output

运行make后,您将拥有一个名为output的文件,其中包含mySample.py的返回值。

做到的一种方法是让您的python脚本写入您要在Makefile中使用的值到输出文件。然后,您的makefile可以从该中介文件中读取值。

示例:

with open("intermediary.tmp", "wb") as h:
    h.write(SUCCESS)

最新更新