2014-02-09 3 views
1

Что я уже сделал:Makefile вопросы: г ++: фатальная ошибка: не введены файлы

Я просмотрел другие потоки StackOverflow с подобными проблемами, но ни один из них не кажется, обратиться к моему конкретному случаю , Я также дважды проверял, чтобы правильные файлы находились в правильных местоположениях (папках) и что все названо правильно.

Это ошибка я получаю:

[[email protected]]$ make 
g++ -Wall -O2 -ansi -pedantic -o dog.cpp 
g++: fatal error: no input files 
compilation terminated. 
make: *** [mscp.o] Error 4 

Вот Makefile в вопросе:

CC = g++ 
CFLAGS = -Wall -O2 -ansi -pedantic -Werror 

TARGETS = dog dog.o collar.o 

dog: dog.o collar.o 
    $(CC) $(CFLAGS) -o dog collar.o dog.o 

dog.o: dog.cpp collar.h 
    $(CC) $(CFLAGS) -o dog.cpp 

collar.o: collar.cpp collar.h 
    $(CC) $(CFLAGS) -o collar.cpp 

clean: 
    -rm -f ${TARGETS} 

Вот файлы (они все в том же каталоге), которые будучи ссылка на файл makefile:

-collar.cpp 
-collar.h 
-makefile 
-dog.cpp 

Что я делаю неправильно?

+0

http://www.rapidtables.com/code/linux/gcc/gcc-o.htm – willll

+1

Что такое 'mscp.cpp'? –

+0

Извините, я имел в виду dog.cpp. Исправлена. – NewGradDev

ответ

2

Этот

dog.o: dog.cpp collar.h 
    $(CC) $(CFLAGS) -o dog.cpp 

collar.o: collar.cpp collar.h 
    $(CC) $(CFLAGS) -o collar.cpp 

следует читать

dog.o: dog.cpp collar.h 
    $(CC) $(CFLAGS) -c dog.cpp 

collar.o: collar.cpp collar.h 
    $(CC) $(CFLAGS) -c collar.cpp 
+0

А, стреляй, вот что мне не хватало. Я забыл включить имя исполняемого файла после «-o». Я экспериментировал с заменой «-o» на «-c», и это тоже сработало. Спасибо, что указал мне в правильном направлении! – NewGradDev

+0

Обратите внимание, что при использовании '-c' с' file.cpp' имя выходного файла по умолчанию является 'file.o', поэтому вы можете опустить' -o file.o', если вы не хотите, чтобы по умолчанию filename для объектного файла. – smani

2

Попробуйте сделать

$(CC) $(CFLAGS) - c collar.cpp -o compiledfilename 

Compiledfilename это имя бинарного файла.

+0

Вам все еще нужно '-c'. – smani

+0

Используйте $ (CC) $ (CFLAGS) -c collar.cpp - o binaryfilename –

0

Я знаю, что уже поздно отвечать. Но это может помочь кому-то еще. Я была такая же проблема. И я исправил его, заменив .h файл с .hpp файл. Это сработало :)