Makefile使用Python编译单个文件

时间:2019-07-19 14:10:57

标签: python makefile

我正在从Pythone 2.x迁移到3.x。我正在尝试使用Python在Makefile中编译单个文件:

在Makefile中:

mySuperFile.c :  $(ROOT)/lib/mySuperFileGenerate $(FILES_DIR) $(REPO_STATE_FILE)
$(ROOT)/lib/mySuperFileGenerate --out-dir=$(OUT_DIR) --repo=$(ROOT) --output=mySuperFile.c

其中 mySuperFileGenerate 是Python脚本,该脚本使用全局python版本,即2.x.x,并不满足我的要求:

!/usr/bin/env python

这就是为什么我要显式调用Python版本,例如这样(在脚本之前添加$ {PYTHON373}变量):

mySuperFile.c : ${PYTHON373} $(ROOT)/lib/mySuperFileGenerate $(FILES_DIR) $(REPO_STATE_FILE)
     $(ROOT)/lib/mySuperFileGenerate --out-dir=$(OUT_DIR) --repo=$(ROOT) --output=mySuperFile.c

但是它根本不起作用。它仍然从环境-2.x调用该版本。

所以我的问题是:

如何指定在Makefile中确切使用哪个Python? (不更改环境)。有可能吗?

1 个答案:

答案 0 :(得分:2)

规则的第一行描述了目标的先决条件。它没有描述如何运行目标。在该行中添加<meta name="theme-color" content="#2196F3">的全部意思是,如果该文件发生更改,则应重建目标。

规则中的第二行(由TAB缩进)显示了如何运行命令。如果要使用其他Python解释器运行命令,则必须将其添加到要运行的命令中:

${PYTHON373}