2012-05-08 4 views
0

내 메이크 파일 내에서 내 ".h"파일에 대한 재 컴파일/업데이트를 어떻게 포함시킬 수 있습니까?컴파일 .h 파일

COMPILER = g++ 
SOURCES = main.cpp 
APP = executable/main 

OBJECTS = $(SOURCES:.cpp=.o) 

all: $(SOURCES) $(APP) 

$(APP): $(OBJECTS) 
    $(COMPILER) $(OBJECTS) -o [email protected] 

clean: 
    rm -rf *.o $(APP) 

지금 내가 프로젝트를 다시 컴파일하고 싶지만 난 그냥 whatever.h 및 whatever1.h을 수정한다고 가정

이 내 메이크입니다. 이 파일들은 main.cpp 헤더에 포함되어 있습니다. 앱 의존성 목록에서

+0

당신은 소스 파일과 헤더 파일 사이의 의존성을 추가합니다. makeepend (패키지 imake에서)가 이것을 할 수 있습니다. – trojanfoe

답변

3

. 그러면 다시 연결 (즉, 빌드 mainmain.o)이지만 다시 컴파일되지 않습니다. 즉, main.cpp, whatever.hwhatever1.h 중에서 main.o을 빌드하십시오. 실행 파일의 동작은 변경되지 않으므로 헤더 변경 내용을 반영하지 않습니다.

당신은 오브젝트 파일의 전제 조건 목록에이 파일을 추가해야합니다 :

main.o: whatever.h whatever1.h 
+0

또한 C 컴파일러에 명령 줄 옵션을 전달하여 종속 파일을 생성 할 수 있습니다. makefile에이 파일을 포함시켜야합니다. – harper

+0

@ 하퍼 : 그렇습니다. 그러나 이것은 고급 기술입니다. OP는 분명 초보자입니다. – Beta

-1

추가 헤더 파일 : 그것은 $(APP)의 종속성 목록에이 파일을 추가 할 좋은하지 않을 것이다

COMPILER = g++ 
SOURCES = main.cpp 
HEADERS = whatever.h whatever1.h 
APP = executable/main 

OBJECTS = $(SOURCES:.cpp=.o) 

all: $(SOURCES) $(APP) 

$(APP): $(OBJECTS) $(HEADERS) 
    $(COMPILER) $(OBJECTS) -o [email protected] 

clean: 
    rm -rf *.o $(APP) 
+0

고맙습니다. –