2010-05-11 6 views
1

Вот простой заголовочный файл для шести разных программ. Этот Makefile работал очень хорошо, но потом я сменил программы на другие файлы реализации. Этот Makefile необходимо изменить, чтобы при изменении файлов реализации файлы, которые включают эти файлы реализации, перекомпилировались.Как добавить зависимости к этому заголовочному файлу

all: load list show add delete btree 
%: %.cpp 
    g++ $< -g -o [email protected] 

ответ

2

Вы можете использовать опцию -MM gcc для создания файлов зависимостей, а затем включить их в свой Makefile.

TARGETS = load list show add delete btree 
all: $(TARGETS) 
%: %.cpp 
    g++ $< -g -o [email protected] -MM -MF [email protected] 
    sed "s/[email protected]\.o:/[email protected]:/" [email protected] > [email protected] 
    [email protected] [email protected] 

DEPS=$(TARGETS:%=%.d) 
-include $(DEPS) 

sed линия присутствует, чтобы изменить файл зависимости от load.o: load.c к load: load.c.

+0

Когда я делаю g ++ -MM list.cpp, я получаю следующий вывод: list.o: list.cpp bt.h insert.c btio.c btutil.c Lab2.cpp. Что я должен делать с этим? На самом деле это ничего не создает. – neuromancer

+0

Вам не нужно запускать его напрямую - правило%:% .cpp делает это. Правило преобразует эту строку в набор .d-файлов, которые затем включаются в make-файл – Mark

+0

'-MM' генерирует этот вывод, а' -MF 'перенаправляет его в файл (заканчивается на .dd). Следующая строка запускает 'sed', чтобы немного изменить и переименовать ее в' .d'. Эти последние '.d' файлы включены в Makefile и сообщают, какой файл зависит от другого. –

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