2017-01-05 60 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

非常感謝! –