2014-02-11 17 views
0
exe = mp1 
exe2 = compare 

mp1: $(exe) 
compare: $(exe2) 

COMPILER = g++ 
COMPILER_OPTS = -c -g 

LINKER = g++ 
LINKER_OPTS = 

common_objs = EasyBMP.o 
exe_objs = main.o 
exe2_objs = compare.o 

$(exe) : $(common_objs) $(exe_objs) 
    $(LINKER) $(LINKER_OPTS) $^ -o [email protected] 

$(exe2) : $(common_objs) $(exe2_objs) 
    $(LINKER) $(LINKER_OPTS) $^ -o [email protected] 


EasyBMP.o : EasyBMP.h EasyBMP.cpp EasyBMP_BMP.h EasyBMP_DataStructures.h EasyBMP_VariousBMPutilities.h 
    $(COMPILER) $(COMPILER_OPTS) EasyBMP.cpp 
main.o : main.cpp 
    $(COMPILER) $(COMPILER_OPTS) main.cpp 
compare.o : compare.cpp 
    $(COMPILER) $(COMPILER_OPTS) compare.cpp 

clean: 
    -rm *.o $(exe) 

當我做比較或製作mp1時,我得到循環依賴關係。有什麼問題??循環依賴關係在make文件中的多個可執行文件上丟失

你也可以解釋一下「%^」宏的意思嗎?

+1

如果您告訴我們_這種循環依賴關係被丟棄,這將非常有幫助。當你想問一個問題時,粘貼你得到的確切錯誤信息應該是你做的第一件事。 – MadScientist

回答

0

你有這樣的:

exe = mp1 
exe2 = compare 

mp1: $(exe) 
compare: $(exe2) 

因此,擴大了變量之後,這就是:

mp1: mp1 
compare: compare 

這意味着「打造MP1,您必須首先建立MP1,並建立比較,你必須先建立比較「。因此,循環依賴。我不知道你的意思是%^。也許你的意思是$^?在GNU make手冊中查找Automatic Variables

0

你有mp1和比較定義爲導致循環依賴的行3和4上的條件。