Cygwin - Makefile-Fehler: Rezept für Ziel `Haupt.o' fehlgeschlagen

Bin ich derzeit nicht zu schreiben, ein gutes makefile und weiß nicht den Grund warum.. -.-

Dies ist mein main.c:

#include <windows.h>
#include <stdio.h>

int main(int argc, char *argv[])
{ 
   printf("MEEEEEP");
   return (0);
}

Dies ist mein makefile:

# make SYSTEM= OS= ENVIRONMENT=
# Binaries to use
ifeq ($(ENVIRONMENT),MINGW)
  CXX   = i686-pc-mingw32-g++
else
  CXX   = g++
endif
REMOVE  = rm -vf

RC      = windres
EXE     = .exe

#############################################################
# Info

ifeq ($(CXX),g++)
INFO_CXX = g++ -dumpversion; g++ -dumpmachine
endif

#############################################################
# Flags

DEBUG = -DDEBUG -g
OPTIMIZATION = -O2 #-Winline -finline-functions

CFLAGS = -Wall -Wextra -W -static $(DEBUG) $(OPTIMIZATION) -D$(SYSTEM) -D$(OS) -D$(ENVIRONMENT) $(PRGFLAGS)

ifeq ($(SYSTEM),I686)
  CFLAGS   += -m32

  ifeq ($(OS),WIN32)
    CFLAGS += -D_WIN32 
  endif

  ifeq ($(ENVIRONMENT),MINGW)
    CFLAGS += -fexceptions 
  endif
endif

 LFLAGS    = 

#############################################################
# Files

CFILES      = main.c
OBJS        = ${CFILES:.c=.o}

#############################################################
# Include

INCLUDES      = -I.

#############################################################
# Library

LIBRARIES     = 

#############################################################
# Targets
.PHONY: all
all:    
    @echo == Standard build: make SYSTEM=I686 OS=WIN32 ENVIRONMENT=MINGW
    @echo
    @echo 
    make SYSTEM=I686 OS=WIN32 ENVIRONMENT=MINGW gyro

#############################################################
# Implicit rules and filename extensions... 
.SUFFIXES: .h .o .c

.c.o:     %.h
      @echo Compiling $< for $(SYSTEM) $(OS) $(ENVIRONMENT) ...
      @echo MEEP
      $(CXX) $(CFLAGS) $(INCLUDES) -c $< -o $@
      @echo MEEP2

#############################################################
# Target rules
gyro: $(OBJS)
      @echo Building software for $(SYSTEM) ...
      @echo
      $(CXX) $(CFLAGS) $(LFLAGS) -o $@$(EXE) $(OBJS) $(LIBRARIES)

#############################################################
# Clean
.PHONY: clean
clean:
    $(REMOVE) $(OBJS)


#############################################################
# Info
.PHONY: info
info:
    @echo 
    @echo Information about C++ Compiler/Linker:
    @echo 
    $(INFO_CXX)

Geben, wenn ich in machen gyro,
ich erhalte die Ausgabe:

Compiling main.c for Windows_NT ...
MEEP
g++ -Wall -Wextra -W -static -DDEBUG -g -O2  -D -DWindows_NT -D  -I. -c main.c -o     main.o
makeNew.mak:83: recipe for target `main.o' failed
make: *** [main.o] Error 1

Aber die Linie 83 ist hinter .c.o: %.h. Und ich verstehe nicht, warum.
Hat jemand eine Lösung für mich?

  • 1) haben Sie versucht, die Vereinfachung dieses Makefiles? 2) Haben Sie versucht mit diesem Befehl von der Befehlszeile aus?
  • Ich Tat, aber es war nicht genug. Ich habe diese von einem Kollegen, damit dieses für die serielle Schnittstelle Programmieren, haben aber keine ausreichende Erfahrung mit makefiles (ich habe gerade verwendet "make all", weil einige andere aus der makefiles). Ich normalerweise wollen ein makefile wie dieses: kompilieren alle meine c-Dateien in diesem Ordner und erstellen Sie eine ausführbare Datei namens gyro von ihm.. das ist alles was ich brauche, aber ich kann eine Pause brauchen.. es fühlt sich an wie es nicht in meinen Kopf. 🙁
  • Das dauert ein paar Iterationen. Versuchen Sie diese von der Kommandozeile aus: g++ -Wall -c main.c -o main.o. Wenn es funktioniert, können wir aufbauen.
  • Hey Beta! Vielen Dank für Ihre Antwort! Weder g++ -Wall -c main.c -o main.o noch i686-pc-mingw32-g++ -Wall -c main.c -o main.o funktioniert. Ich bekomme keine Antwort von der Befehlszeile aus.
  • Re PS: du bekommst viel bessere Reaktion, wenn Sie Fragen, verschiedene Fragen als getrennte Fragen. Obwohl ich nicht sicher bin, wie gut zu Ihnen passt, "zeigen Sie mir an, eine gute Anleitung" ist für die Stack-Exchange-Foren.
InformationsquelleAutor Aureon | 2012-08-13
Schreibe einen Kommentar