Makefile使用Python编译单个文件

2024-06-16 12:06:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从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 version,如下所示(在脚本之前添加了${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?(不改变环境)。有可能吗?你知道吗


Tags: outputlibdirreporootfilesoutmakefile
1条回答
网友
1楼 · 发布于 2024-06-16 12:06:06

规则的第一行描述目标的先决条件。它没有描述如何运行目标。向该行添加${PYTHON373}就是说,如果该文件发生更改,则应该重建目标。你知道吗

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

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

相关问题 更多 >