2012-05-08 4 views
0

как я могу включить рекомпиляцию/обновление для своих собственных «.h» файлов в моем make-файле.компилировать .h файл

Это мой Makefile:

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

Добавляется Зависимость от между исходными файлами и файлами заголовков. makedepend (от пакета imake) может сделать это за вас. – trojanfoe

ответ

3

Он не будет делать ничего хорошего, чтобы добавить эти файлы в список зависимостей $(APP). Это приведет к тому, что Make переделать (то есть построить main из main.o), но не перекомпилировать (то есть построить main.o из main.cpp, whatever.h и whatever1.h). Поведение исполняемого файла не изменится - оно не будет отражать изменения, внесенные вами в заголовки.

Вы должны добавить эти файлы в список предпосылок файла объекта:

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

Кроме того, вы можете передать параметр командной строки своему компилятору C для создания файла зависимостей. Вы должны включить этот файл в свой файл. – harper

+0

@harper: да, но это передовая техника; ОП явно является новичком. – Beta

-1

файлы Добавить заголовок в список вашего приложения зависимостей:

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

Большое спасибо –

Смежные вопросы