2012-06-26 3 views
0

gnu 메이크 파일 템플릿이 잘 서비스되어 있지만 내 경로에 첫 번째 g ++ 이외의 컴파일러를 지정하려고하면 실패합니다.gnu 메이크 파일에서 컴파일러 지정하기

다음은 템플릿입니다.

CXX = g++ 
CXXFLAGS = $(INC) $(LIB) -Wall 
INC = -I./ -I/usr/local/include 
LIB = -L/usr/local/lib 
SRCS = \ 
blah1.cpp 
blah2.cpp 

OBJS = $(SRCS:.cpp=.o) 
DEPS = $(SRCS:.cpp=.d) 
PROG = myprog 

$(PROG): $(OBJS) 
    $(CXX) $(CXXFLAGS) -o [email protected] $(OBJS) 

%.d: %.cpp 
    @set -e; rm -f [email protected]; \ 
    $(CXX) -MM $(CXXFLAGS) $< > [email protected]$$$$; \ 
    sed 's,\($*\)\.o[ :]*,\1.o [email protected] : ,g' < [email protected]$$$$ > [email protected]; \ 
    rm -f [email protected]$$$$ 

debug: CXXFLAGS += -O0 -DDEBUG -ggdb 
debug: $(PROG) 

-include $(DEPS) 

.PHONY: clean 
clean: 
    rm -f $(DEPS) $(OBJS) $(PROG) 

I가/usr/local/bin 같은 것으로 ++ g에서 컴파일러를 변경

이/g ++ (46), 여전히 g로 컴파일 ++ (은/usr/빈/g ++ 정확한 예정). 왜?

P. 템플릿 비평은 환영합니다. 나는 gnu make에 익숙하지 않다. 나는 그저 웹을 벼락치락 거리고 하루 동안 검색했다. 기본 C 컴파일러를 지정

$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c 

$(CXX)하지 $(CC) : 당신은 오브젝트 파일을 구축하는 방법에 대한 자신의 규칙을 지정, 그래서 확인하지 않은

+0

위의 템플릿에서 CC를 CXX로 바꿨습니다. – jrm

답변

4

은 인 the default implicit rule를 사용합니다.

+0

조금 더 자세히 설명하기 위해,'CC'는'gcc' 나 다른 * C * 컴파일러의 일부 버전을 가리키고,'CXX'는'g ++'또는 다른 * C++ * 컴파일러의 어떤 버전이어야합니다. – twalberg

+0

감사합니다. – jrm

관련 문제