如何在Makefile中获取python脚本返回值?

时间:2016-06-14 19:51:46

标签: python makefile

有人可以帮我找到一种方法从Makefile中的python脚本中捕获返回值。我有一个场景,源代码通过Makefile构建,当python脚本重新运行失败时应该抛出构建错误

myMakefile.mak

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

mySample.py

SUCCESS 0
FAIL 1

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

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果你的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中的每个命令都在一个单独的shell中运行,因此您必须在与正在运行的命令相同的子shell中捕获输出(即使输出捕获与您关注的命令位于同一行的一部分)

示例:

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

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

答案 1 :(得分:0)

执行此操作的一种方法是让您的python脚本将要在makefile中使用的值写入输出文件。然后你的makefile可以读取该中间文件的值。

示例:

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