2017-01-05 3 views
0

zuerst, danke an alle."Nichts für Makefile zu tun"

Ich habe 3 Stunden lang versucht, herauszufinden, was falsch ist, ich habe eine gründliche Recherche im Internet gemacht und ich fand nichts, was für mich funktionierte. Ich habe viele Beispiele ausprobiert, die auf die gleiche Weise beendet wurden; fehlende Trennzeichen oder nichts zu tun.

Was könnte es sein?

Mein .c und .h werden auf die gleiche Weise 3enRayaPunteros.c/h

Hier Code mein Make-Datei des gerufenen:

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

Vielen Dank:

+0

Eine allgemeine Falle mit Makefiles ist, dass sie ein Tab-Zeichen, nicht Leerzeichen erwarten, die nicht auf Websites angezeigt wird. – ti7

+0

Bitte zeigen Sie ein aktuelles Makefile, den tatsächlichen Befehl, den Sie aufgerufen haben, und den tatsächlichen Fehler, den Sie erhalten haben (via cut/paste). Paraphrasieren und generische Aussagen wie "es funktioniert nicht" kann nicht geholfen werden. _missing separator_ ist normalerweise, weil Sie Leerzeichen verwenden, wenn Sie TAB-Zeichen verwenden sollten (beachten Sie, dass es ein tatsächliches TAB sein muss, also stellen Sie sicher, dass Ihr Texteditor nicht "hilfreich" Ihr TAB in Leerzeichen konvertiert). _Nothing to done_ kann bedeuten, dass nichts wirklich getan werden muss, oder dass Ihr Makefile falsch sein könnte, oder Sie fälschlicherweise fälschlicherweise aufrufen könnten; wir können es nicht sagen. – MadScientist

Antwort

1

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

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

Sie möchten, dass Ihre ausführbare Datei Juego von einer Datei .o abhängt. Diese Objektdatei muss von Ihren Quelldateien abhängig sein .c, .h, ....

Es ist üblich, auf den Zielnamen mit [email protected] Bezug zu nehmen, beziehen Sie sich auf alle Voraussetzungen mit $+ und beziehen Sie sich auf die erste Voraussetzung mit $^.

Fehlender Seperator bedeutet normalerweise, dass Sie spaces und tabs vermischen. Make ist sehr fummelig, wenn es darum geht, so tun NICHT verwenden Sie tabs, um alles außer Rezepte einzurücken. Nichts zu tun bedeutet genau das, was die Botschaft sagt: Es gibt nichts zu tun für das, was Sie gefragt haben.

+0

Es ist nicht wahr, dass du 'make Juego' schreiben musst. Es gibt nichts Magisches über das Ziel namens "alle" zu machen; Es ist nur eine übliche Konvention in vielen Makefiles. make selbst erstellt immer das erste explizite Ziel, das es standardmäßig im Makefile findet, egal wie es heißt. – MadScientist

+0

Danke für die Klarstellung, edited es raus. – sycko

+0

Vielen Dank! –