私は次のメイクファイルで少しプロジェクトがあるとします。 o-ファイル(2つの依存関係 - .cppと.hpp)の世代に注意してください。make:2つの依存関係が必要ですが、1つしか存在しません。
LIB_OPTS = -lpthread
CPP_OPTS = -std=c++11 -Wall
all: main
${CXX} ${CPP_OPTS} ${LIB_OPTS} *.o -o main
main: a.o b.o c.o main.o
%.o: %.cpp %.hpp
${CXX} ${CPP_OPTS} ${LIB_OPTS} -g -c $< -o [email protected]
clean:
rm *.o
a、bおよびcにはcppとhpp-filesがあります。
メインには.cppしかありません。
ここに出力があります。
g++ -std=c++11 -Wall -lpthread -g -c a.cpp -o a.o
g++ -std=c++11 -Wall -lpthread -g -c b.cpp -o b.o
g++ -std=c++11 -Wall -lpthread -g -c c.cpp -o c.o
g++ -c -o main.o main.cpp
g++ -std=c++11 -Wall -lpthread *.o -o main
main.oの生成についてはどうですか?
どこから来たのですか?私のルールに関係ないことです。
私がmain.hppを持っていれば、それは私のルールをキャッチします。 もちろん、main.oのための別のルールを作ることができますが、%.oがそれを作ることを期待しました。
ありがとうございました! Chris