2017-05-19 11 views
0

シンプルなPythonバインディングをビルドするMakefileがあります。残念ながら、makeまたはmake allの場合は、py11_bindings.cppが変更されていなくても毎回再構築されます。ソースファイルが誤って触れられたのかどうかを確認しましたが、それは私が見た限りではありません。毎回このMakefileが再構築されるのはなぜですか?

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

私はメイクファイルの専門家ではないため、正しい用語を使用していない可能性があります。

ただし、all:は、作成するターゲットをリストするときにソースファイルを作成するように定義しています。次に、各ターゲットに対して、依存関係をリストし、記述し、作成する方法を説明します。

だから、あなたのメイクファイルは次のようになります。

all: $(TARGET) 

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

と '.PHONY追加:すべてのclean'を。 –

+0

申し訳ありませんが、ご利用いただけません。 makefileをあなたの提案に変えても同じことが起こります。 – Michael

+1

@Michaelあなたの更新されたコードと 'make -rd'の出力を投稿してください。 –

関連する問題