包含执行包含的Makefile

时间:2015-10-07 06:48:20

标签: python-2.7 makefile

我正在为Python项目使用Makefiles。我需要在每个Makefile中包含一些Python配置变量,并且Makefile可以驻留在项目根目录中的各个子目录中(尽管不超过一个级别)。

在项目的根目录中,我创建了一个Makefile.inc,例如,包含以下内容:

define PYSCRIPT
from lib.custommodule import VAR1
print(VAR1)
endef
VAR1 := $(shell python -c '$(PYSCRIPT)')

' custommodule'存在于项目的Python lib目录根目录中,包含Makefile.inc的顶级所有Makefile都可以正常执行。

在'子目录/ Makefile'中,我有:

include ../Makefile.inc
echo $(VAR1)

当我cd subdirectory && make时,收到错误:

ImportError: No module named custommodule

我已尝试将Python路径添加到' Makefile.inc' (在define PYSCRIPT块中)包含父目录,认为'子目录/ Makefile'正在执行' ../ Makefile.inc'在它自己的路径与其父路径之间,但这也不起作用。

我错过了阻止这种情况发生的事情吗?或者是否有更好的方法来实现我尝试的目标?

1 个答案:

答案 0 :(得分:0)

Makefile.inc如何:

ROOTDIR ?= .

define PYSCRIPT
from lib.custommodule import VAR1
print(VAR1)
endef
export PYSCRIPT

VAR1 := $(shell PYTHONPATH=$(ROOTDIR) python -c "$$PYSCRIPT")

subdirectory/Makefile

ROOTDIR = ..
include $(ROOTDIR)/Makefile.inc

all:
    echo $(VAR1)

未经测试。