2013-05-07 2 views
0

나는 다음과 같은 makefile을 말해봐 라이브러리에 링크하고 $ (SRC)를 해당 라이브러리에 링크되는 실행 파일에 저장합니다. 그것은 모두 .o 인 파일로 node.cpp을 컴파일하려고 계속여러 세트

gcc -fPIC -o obj/node.o -g -DMEMPOOL -c src/node.cpp 
gcc -fPIC -o obj/tree.o -g -DMEMPOOL -c src/node.cpp 

: 나는 그것을 '확인'할 때

는하지만, 나는 다음과 같은 오류가 발생합니다.

디렉토리 트리를 분리하고 재귀 적 make를 사용하지 않고 별도의 파일 세트에 대해 별도의 규칙을 지정하는 방법이 있습니까?

감사합니다.

+0

패턴 규칙을 확인하십시오. http://www.gnu.org/software/make/manual/html_node/Pattern-Rules.html –

답변

2

이 규칙은 아마 당신이 그들이 생각하는 일을하지 않습니다 :

$(LOBJS) : $(LSRC) 
     $(CC) -fPIC -o [email protected] -c $< 

$(OBJS) : $(SRC) 
     $(CC) -o [email protected] -c $< 

$<은 소스 파일이 먼저 $(SRC) 목록 중 단지 의미 규칙의 필수로 확장됩니다. 당신은 원하지 않습니다. 실제로는 의존성에 대한 허위 진술 일 겁니다. node.otree.cpp에 의존하지 않습니다. 맞습니까?

특정 피사체와 특정 소스 파일을 일치시키기 위해 패턴 규칙으로 사용하기를 원합니다.

$(LOBJS) : obj/%.o : %.cpp 
     $(CC) -fPIC -o [email protected] -c $< 

$(OBJS) : obj/%.o : %.cpp 
     $(CC) -o [email protected] -c $< 

당신은 너무 거기에 src/을해야 할 수도 있습니다,하지만 그 원본 파일에 어디에서 왔는지 나는 볼 수 없습니다. 그 문제에 대해서는 -g -DMEMPOOL도 마찬가지입니다.

편집 주석 : C++ 프로그램을 가지고 있으므로 CC이 아닌 CXX을 사용하는 것은 관용적입니다.

관련 문제