python - 为什么这个 Makefile 每次都要重建?

标签 python c++ makefile

我有一个 Makefile 来构建一些简单的 Python 绑定(bind)。不幸的是,在普通的 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: 定义了创建源文件的时间,它应该列出要创建的目标。然后,您应该为每个目标列出依赖项并描述如何创建它。

因此,您的 makefile 应如下所示:

all: $(TARGET)

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

关于python - 为什么这个 Makefile 每次都要重建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44066602/

相关文章:

c++ - Linux 和 Windows 返回值不同的原因是什么,如何解决?

c++ - 错误 : Expected a “;” Visual Studio 2012

java - 用于 Java 的 MakeFile?

python - 消除小于某个指定数量阈值的连接像素数量

python - 在不读取目录的所有内容的情况下查找目录中的最新文件

python - 导入 matplotlib 失败,在 heroku 上没有名为 _tkinter 的模块

gcc - GCC 中没有 Makefile.am 的 Makefile.in?

python - ipython:exit() 语句未按预期工作

c++ - 循环中 << 和 * 哪个运算符运行得更快?

makefile - POSIX 可以从程序输出中设置一个变量吗?