为什么这个生成文件每次都会重建

Why does this Makefile rebuild every time?

本文关键字:重建 文件 为什么      更新时间:2023-10-16

我有一个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)

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

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

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

因此,您的生成文件应如下所示:

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