Makefile问题:g ++:致命错误:没有输入文件

时间:2014-02-09 00:39:38

标签: c++ makefile file-not-found

我已经完成了什么:

我查看了其他具有类似问题的StackOverflow线程,但它们似乎都不适用于我的具体情况。我还仔细检查以确保正确的文件位于正确的位置(文件夹),并且所有内容都被正确命名。

这是我收到的错误:

[employee_xyz@petco.com]$ 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

我做错了什么?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

尝试

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

Compiledfilename是二进制文件的名称。

答案 2 :(得分:0)

我知道回答为时已晚。但这可能对其他人有所帮助。我遇到过同样的问题。我通过用 .hpp 文件替换 .h 文件来修复它。它工作了:)