मैं वर्तमान में एक अच्छा makefile लिखने के असफल रहने के कारण कर रहा हूँ और पता नहीं है क्यों .. -.-Cygwin - Makefile-त्रुटि: लक्ष्य `main.o 'के लिए नुस्खा में विफल रहा है
यह मेरा main.c है :
#include <windows.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("MEEEEEP");
return (0);
}
यह मेरी 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)
जब मैं मेकअप जायरो में टाइप करें, मैं उत्पादन प्राप्त 0
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
लेकिन रेखा संख्या 83 पीछे है .c.o:% .h। और मुझे समझ में नहीं आता क्यों। क्या किसी के पास मेरे लिए कोई समाधान है?
1) क्या आपने इस मेकफ़ाइल को सरल बनाने का प्रयास किया है? 2) क्या आपने कमांड लाइन से उस कमांड को चलाने का प्रयास किया है? – Beta
मैंने किया लेकिन यह पर्याप्त नहीं था। सीरियल पोर्ट प्रोग्रामिंग के लिए इसका उपयोग करने के लिए मुझे सह-कार्यकर्ता से यह मिला लेकिन मेकफ़ाइल के साथ कोई स्वीकार्य अनुभव नहीं है (मैंने अभी "सभी को" बनाया है, क्योंकि कुछ अन्य ने मेकफ़ाइल बनाये हैं)। मैं आम तौर पर इस तरह एक मेकफ़ाइल चाहता हूं: इस फ़ोल्डर में मेरी सभी सी-फाइलों को संकलित करें और इसे से गियर नामक निष्पादन योग्य बनाएं .. मुझे बस इतना ही चाहिए, लेकिन मुझे ब्रेक की आवश्यकता हो सकती है .. ऐसा लगता है जैसे यह मेरे सिर में नहीं आ जाएगा। :-( – Aureon
इसमें कुछ पुनरावृत्तियों का प्रयास किया जाएगा। कमांड लाइन से इसे आज़माएं: 'g ++ -Wall -c main.c -o main.o'। अगर यह काम करता है, तो हम इसे बना सकते हैं। – Beta