2017-01-05 61 views
0

首先,要感谢所有人。“无法完成makefile”

我一直有3个小时试图找出什么是错的,我在互联网上做了深入的研究,我没有发现任何对我有用的东西。 我试了很多以相同方式结束的例子,丢失分隔符或没有任何事情要做。

它可能是什么?

我的.c和.h被称为以同样的方式3enRayaPunteros.c /小时

这里是我的makefile代码:

Juego: 3enRayaPunteros.o 
gcc -o Juego 3enRayaPunteros.o 
3enRayaPunteros.o: 3enRayaPunteros.c 3enRayaPunteros.h 
    gcc -c 3enRayaPunteros.c 

太感谢你了:

+0

Makefiles的一个常见陷阱是他们希望制作一个制表符,而不是在网站上不显示的空格。 – ti7

+0

请显示一个实际的生成文件,您调用的实际命令以及您获得的实际错误(通过剪切/粘贴)。解释和类似“不起作用”的通用语句是无法帮助的。 _missing separator_通常是因为您在使用TAB字符时要使用空格(注意它必须是实际的TAB,因此请确保您的文本编辑器不会“帮助”将您的TAB转换为空格)。 _无事可做_可能意味着什么都不需要做,或者你的makefile可能是错误的,或者你可能正在调用make;我们不能说。 – MadScientist

回答

1

尝试

Juego: 3enRayaPunteros.o 
    gcc -o [email protected] $+ 

3enRayaPunteros.o: 3enRayaPunteros.c 3enRayaPunteros.h 
    gcc -c -o [email protected] $^ 

您希望您的可执行文件Juego依赖于.o文件。该目标文件需要取决于您的源文件.c, .h, ...

通常的做法是用[email protected]来引用目标名称,请参阅$+的所有先决条件,并参考$^的第一个先决条件。

缺少分隔符通常意味着你正在混合spacestabs。当涉及到这个时,制作非常花哨,所以不是使用tabs缩进除了食谱以外的任何东西。没有什么可以做的事情意味着什么信息说:你所要求做的事情没有任何事情要做。

+0

你不得不写'make Juego'。关于名为'all'的目标没有什么不可思议的。这在许多makefile中只是一个常见的约定。使它自己将始终构建它在makefile中找到的第一个显式目标,默认情况下,不管它的名字是什么。 – MadScientist

+0

感谢您的澄清,编辑出来。 – sycko

+0

非常感谢! –