2014-11-17 1 views
0

имейте проблемы в makefile. , когда я исполняю make COMMANDE в терминале он должен генерировать header.o и main.o, а затем объединить их для создания excutable kmeans.o файла, но это не так, это только генерировать header.o, который km.o и остановить без сообщения об ошибке.makefile генерирует файловый объект только для файла заголовка?

это мой макияж файла:

CFLAGS = -ggdb 
DEFINES = -DDEBUGGA 
INCLUDES = 
LIBS = -lstdc++ 
EXAMPLE = kmeans.o 
CC=g++ 

.cpp.o: 
    $(CC) -c $(CFLAGS) $(DEFINES) $(INCLUDES) $< 

all:: km.o kmeans.o 

km.o: km.cpp km.hpp 
gnuplot_i.o: gnuplot_i.hpp 
kmeans.o: main.cpp 

kmeans: $(EXAMPLE) 
    $(CC) -o [email protected] $(CFLAGS) $(EXAMPLE) $(LIBS) 

clean: 
    rm -f $(EXAMPLE) kmeans 

km.cpp и km.hpp является файл заголовка и его реализация. gnuplot_i.hpp является заголовком с его реализацией. main.cpp файл, который связывает все эти libries.

ответ

0

Цель по умолчанию в этом файле makefile: all: km.o kmeans.o.

Итак, когда вы запустите make, это то, что будет работать. Так что make создаст эти два файла .o и остановится.

Если вы хотите make быть таким же, как make kmeans то вам необходим all: kmeans в качестве правила по умолчанию или для перемещения kmeans цели выше all целей (так как первая цель по умолчанию один).

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