私のmakefileは、更新があったかどうかをチェックせず、複数のソースファイルが追加されている場合はコンパイルするだけです.1つのソースファイルだけでうまく動作します.
最初のファイルとしてリストされていないソース ファイルは、常に再コンパイルおよびリンクされるようです。
SOURCES=myclass.cpp mylock.cpp
EXECUTABLE=locktest
LIBRARIES=-pthread
CFLAGS=-Wall
CXX=g++
DIR=host/
EXE=$(EXECUTABLE)
OBJECTS=$(SOURCES:%.cpp=$(DIR)%.o)
$(EXE): $(OBJECTS)
$(CXX) -o $@ $(OBJECTS) $(LIBRARIES)
$(DIR)%.o: %.cpp $(DIR)
$(CXX) $(CFLAGS) -c $< -o $@
$(DIR):
@mkdir $(DIR)
clean:
@rm $(OBJECTS) $(EXE)
@rmdir $(DIR)
出力は問題を示しています:
stud@pc:~/Desktop/Locktest$ make
g++ -Wall -c myclass.cpp -o host/myclass.o
g++ -Wall -c mylock.cpp -o host/mylock.o
g++ -o locktest host/myclass.o host/mylock.o -pthread
stud@pc:~/Desktop/Locktest$ make
g++ -Wall -c myclass.cpp -o host/myclass.o
g++ -o locktest host/myclass.o host/mylock.o -pthread