2014-02-11 3 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 파일의 실행 파일 두 개 이상에 누락되었습니다.

"% ^"매크로가 정확히 무엇을 의미하는지 설명 할 수 있습니까 ??

exe = mp1 
exe2 = compare 

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

그래서 변수를 확장 한 후, 이것이다 :

+1

순환 종속성이 삭제되었다고 말씀하시면 매우 유용 할 것입니다. 정확한 오류 메시지를 붙여 넣는 것은 질문 할 때 가장 먼저해야합니다. – MadScientist

답변

0

당신이이

이 "MP1을 구축, 처음 MP1을 구축해야하며, 비교 구축하는 것을 의미
mp1: mp1 
compare: compare 

, 먼저 비교를해야합니다. " 따라서 순환 종속성.

%^의 의미를 모르겠습니다. 어쩌면 $^을 의미할까요? GNU make 매뉴얼에서 Automatic Variables을 찾으십시오.

0

원형 의존성을 유발하는 3 번과 4 번 라인의 조건으로 mp1 및 compare를 정의했습니다.