Actualmente estoy fallando a escribir un buen makefile y no saben la razón por la .. -.-Cygwin - MAKE-error: receta para el objetivo `main.o' fallidos
Esta es mi main.c :
#include <windows.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("MEEEEEP");
return (0);
}
Ésta es mi 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 [email protected]
@echo MEEP2
#############################################################
# Target rules
gyro: $(OBJS)
@echo Building software for $(SYSTEM) ...
@echo
$(CXX) $(CFLAGS) $(LFLAGS) -o [email protected]$(EXE) $(OBJS) $(LIBRARIES)
#############################################################
# Clean
.PHONY: clean
clean:
$(REMOVE) $(OBJS)
#############################################################
# Info
.PHONY: info
info:
@echo
@echo Information about C++ Compiler/Linker:
@echo
$(INFO_CXX)
cuando escribo en maquillaje giroscopio, i recibir la salida:
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
Pero el número de línea 83 está detrás de .c.o:% .h. Y no entiendo por qué. ¿Alguien tiene una solución para mí?
1) ¿Ha intentado simplificar este archivo MAKE? 2) ¿Has intentado ejecutar ese comando desde la línea de comando? – Beta
Lo hice pero no fue suficiente. Obtuve esto de un compañero de trabajo para usar esto para la programación del puerto serie pero no tengo una experiencia aceptable con makefiles (acabo de utilizar "make all", porque algunos otros hicieron makefiles). Normalmente quiero un archivo makefile como este: compilo todos mis archivos c en esta carpeta y construyo un ejecutable llamado gyro de él ... eso es todo lo que necesito, pero puedo necesitar un descanso ... parece que no se me pasará por la cabeza. :-( – Aureon
Esto tomará algunas iteraciones. Pruebe esto desde la línea de comando: 'g ++ -Wall -c main.c -o main.o'. Si funciona, podemos construir. – Beta