कुछ सुझाव (आप का उपयोग संभालने जीएनयू: यह दोनों का निर्माण करने के लिए
$(EXECUTABLE): % : %.c
और फिर डिफ़ॉल्ट नियम make, कुछ और नहीं)
सबसे पहले, make -p
पर चलाएं, आप समझेंगे कि बिल्टिन नियम make
जान रहा है। (-Wall
क्योंकि तुम सच में डीबगिंग के लिए -g
चाहते हैं, और सबसे चेतावनी प्राप्त करने के लिए) COMPILE.c
के लिए विशेष रूप से देखने के लिए और LINK.c
फिर, मेरा सुझाव है
CFLAGS= -g -Wall -I.
और आप शायद नहीं है
$(EXECUTABLE): $(OBJ)
gcc -o [email protected] $^ $(CFLAGS)
हालांकि, मैं श्वास सेंट अधिकांश अन्य नियमों से पहले जोड़ने
.PHONY: all clean
all: $(EXECUTABLES)
वास्तव में, मैं अपने Makefile
कोड होगा (के लिए जीएनयूmake
!) के रूप में पालन
# file Makefile
CC= gcc
RM= rm -vf
CFLAGS= -Wall -g
CPPFLAGS= -I.
SRCFILES= ex1.c ex2.C## or perhaps $(wildcard *.c)
OBJFILES= $(patsubst %.c, %.o, $(SRCFILES))
PROGFILES= $(patsubst %.c, %, $(SRCFILES))
.PHONY: all clean
all: $(PROGFILES)
clean:
$(RM) $(OBJFILES) $(PROGFILES) *~
## eof Makefile
याद रखें कि टैबMakefile
-s में एक महत्वपूर्ण चरित्र है (rules का कार्य हिस्सा)। इस उत्तर में, कम से कम चार रिक्त स्थान से शुरू होने वाली रेखाएं वास्तव में टैब वर्ण से शुरू होनी चाहिए।
एक बार सबकुछ डीबग हो जाने पर, सब कुछ साफ करने के लिए make clean
चलाने पर विचार करें, और फिर make -j CFLAGS=-O2 all
ऑप्टिमाइज़ेशन के साथ समांतर सब कुछ में संकलित करने पर विचार करें।
अंत में, मैं remake
का उपयोग करना चाहिये और चल remake -x
डिबग करने के लिए जटिल Makefile
-s
बेशक
, मैं मान रहा हूँ कि आपके निर्देशिका केवल एकल फ़ाइल कार्यक्रमों है।
बीटीडब्ल्यू, अन्य निर्माता कार्यक्रम भी हैं। शायद आप omake
अपनी स्रोत फ़ाइलों के लिए git जैसी संस्करण नियंत्रण प्रणाली का उपयोग करना न भूलें। यह भी एक उपकरण सीखने का समय है।
all: ex1 ex3
निर्मित make
के लिए डिफ़ॉल्ट नियम तो पहले से ही काम करते हैं:
मेकफ़ाइल जादू के लिए उपरोक्त! – Gui13
बहुत उपयोगी! मेक कमांड के आंतरिक कार्यों में कुछ अंतर्दृष्टि के लिए धन्यवाद। – Raeven