2016-05-19 6 views
1

実行しようとするとメイクファイルエラーが発生しますクライアントを作成またはメイクサーバー。私はこれがなぜであるかを探し回っているが、私はそれを理解することができない。ここに私のメイクです:"メークファイルの循環依存が低下しました"エラー

CC=g++ 
CFLAGS=-c -std=c++11 -Wno-write-strings 
LDFLAGS= 
SOURCES= UDP_Client.cpp UDP_Server.cpp 
CSOURCES = cmain.cpp UDP_Client.cpp 
SSOURCES = smain.cpp UDP_Server.cpp 
OBJECTS=$(SOURCES:.cpp=.o) 
COBJECTS=$(CSOURCES:.cpp=.o) 
SOBJECTS=$(SSOURCES:.cpp=.o) 
EXECUTABLE=run 
CEXECUTABLE=client 
SEXECUTABLE=server 


all: 
    @echo "Please specifiy client or server" 

client: $(CSOURCES) $(CEXECUTABLE) 

server: $(SSOURCES) $(SEXECUTABLE) 

$(EXECUTABLE): $(OBJECTS) 
    $(CC) $(LDFLAGS) $(OBJECTS) -o [email protected] 

$(CEXECUTABLE): $(COBJECTS) 
    $(CC) $(LDFLAGS) $(COBJECTS) -o [email protected] 

$(SEXECUTABLE): $(SOBJECTS) 
    $(CC) $(LDFLAGS) $(SOBJECTS) -o [email protected] 

.cpp.o: 
    $(CC) $(CFLAGS) $< -o [email protected] 

clean: 
    rm *.o 

そして、私は取得していますエラーが簡単なように見えるが、ここでは彼らの実際のテキストです:

make: Circular client <- client dependency dropped. 

答えて

1

あなたは($(CEXECUTABLE)が展開された後)clientclientに依存することにする指示しましたこれは明らかに間違っています。

あなたのメイクは少し紛らわしいですが、私はあなたがしようとしている思いすることはあなたが、あなたが定義したルールと変数のほとんどを必要とする既に方法を知っていることはありません

CXXFLAGS := -std=c++11 -Wno-write-strings 
cobjs := cmain.o UDP_Client.o 
sobjs := smain.o UDP_Server.o 

.PHONY: clean 

client: $(cobjs) 
server: $(sobjs) 
client server: 
    $(CXX) $(LDFLAGS) $^ $(LDLIBS) -o [email protected] 
clean: 
    $(RM) $(cobjs) $(sobjs) 

ですものをコンパイルする。実際にcmain.cppの名前をclient.cppsmain.oからserver.cppに変更し(それに応じてメークファイルの.oファイルの名前を変更する)、clientserverのレシピは必要ありません。

runで何をしようとしているのかわかりませんが、別の実行可能ファイルですか?どうすればUDP_Client.oUDP_Server.oにどのように依存することができますか?main関数が定義されていないと思われますか?