声明变量时为变量赋值

时间:2014-10-03 13:59:44

标签: makefile

据我所知,如果您为下面的变量赋值,则会在声明时为其分配值:

 VER:=value

但是当我这样做时:

VER:=`python xxx.py`        

....
cd ../../pythoncode && python yyy.py $(VER) 

我收到错误说没有找到xxx.py文件,这是因为xxx.py在当前文件夹中,但是当cd ../../pythoncode时,找不到xxx.py。

声明VER时如何设置VER的值?所以这样,VER值设置在cd ../../pythoncode之前,谢谢。

LJ

1 个答案:

答案 0 :(得分:1)

您混淆变量赋值时间和python运行时路径查找。

您的变量值 设置为分析时间。那不是问题。

问题是脚本的路径是一个相对路径,路径解析/查找是由需要使用该文件时使用该文件的任何进程完成的。因此,当您在该配方行中运行python时,python进程看到xxx.py并假设它相对于当前目录,因为您还没有告诉它任何其他内容。

您可以使用VER:= python $(abspath xxx.py)在解析时解析xxx.py并将其转换为绝对路径。然后,当您稍后运行python时,它将获得脚本的绝对路径,而不是相对的路径。

还有其他方法可以解决这个问题,但对于这种情况,这可能是最简单的。