为什么每次Makefile重建?

时间:2017-05-19 09:41:51

标签: python c++ makefile

我有一个Makefile来构建一些简单的Python绑定。不幸的是,在普通makemake all上,即使py11_bindings.cpp未更改,它也会每次都重建。我检查了源文件是否会被意外触摸或者其他东西,但据我所知,情况并非如此。

PYTHON = /Library/Frameworks/Python.framework/Versions/3.5/bin
CPP = c++
INC = -I/software/pybind11/include -I/software/eigen
PYTHONCFG = `$(PYTHON)/python3.5-config --cflags --ldflags`
SRC = py11_bindings.cpp
TARGET = _chain.so

all: $(SRC)
    $(CPP) -O3 -shared -std=c++11 $(INC) $(PYTHONCFG) $^ -o $(TARGET)

clean:
    rm $(TARGET)

我完全不知道为什么会发生这种情况。

1 个答案:

答案 0 :(得分:1)

我不是makefile专家,所以也许我没有使用正确的术语。

但是:您的all:定义创建源文件,它应该列出要创建的目标。然后,您应该为每个目标列出依赖关系并描述如何创建它。

所以,你的makefile应该是这样的:

all: $(TARGET)

$(TARGET) : $(SRC)
    $(CPP) -O3 -shared -std=c++11 $(INC) $(PYTHONCFG) $^ -o $(TARGET)