मेकफाइल - मैक्रोज़
makeकार्यक्रम आपको मैक्रोज़ का उपयोग करने की अनुमति देता है, जो चर के समान हैं। मैक्रोज़ को मेकफाइल में = जोड़े के रूप में परिभाषित किया गया है। एक उदाहरण नीचे दिखाया गया है -
MACROS = -me
PSROFF = groff -Tps
DITROFF = groff -Tdvi
CFLAGS = -O -systype bsd43
LIBS = "-lncurses -lm -lsdl"
MYFACE = ":*)"
विशेष मैक्रों
लक्ष्य नियम सेट में कोई भी आदेश जारी करने से पहले, कुछ विशेष मैक्रो पूर्वनिर्धारित हैं -
$ @ की जाने वाली फ़ाइल का नाम है।
$? परिवर्तित आश्रितों के नाम है।
उदाहरण के लिए, हम एक नियम का उपयोग इस प्रकार कर सकते हैं -
hello: main.cpp hello.cpp factorial.cpp
$(CC) $(CFLAGS) $? $(LDFLAGS) -o $@
Alternatively:
hello: main.cpp hello.cpp factorial.cpp
$(CC) $(CFLAGS) [email protected] $(LDFLAGS) -o $@
इस उदाहरण में, $ @ हैलो और $ का प्रतिनिधित्व करता है ? या $ @। cpp सभी बदली हुई स्रोत फ़ाइलों को चुनता है।
निहित नियमों में दो और विशेष मैक्रोज़ का उपयोग किया जाता है। वे हैं -
$ <संबंधित फ़ाइल का नाम जो कार्रवाई का कारण बना।
$ * लक्ष्य और आश्रित फाइलों द्वारा साझा किए गए उपसर्ग।
आम अंतर्निहित नियम .c (स्रोत फ़ाइलों) में से .o (ऑब्जेक्ट) फ़ाइलों के निर्माण के लिए है।
.cpp.o:
$(CC) $(CFLAGS) -c $<
Alternatively:
.cpp.o:
$(CC) $(CFLAGS) -c $*.c
पारंपरिक मैक्रों
विभिन्न डिफ़ॉल्ट मैक्रो हैं। आप उन्हें डिफ़ॉल्ट बनाने के लिए "मेक-पी" लिखकर देख सकते हैं। अधिकांश उन नियमों से बहुत स्पष्ट हैं जिनमें उनका उपयोग किया जाता है।
ये पूर्वनिर्धारित चर, अर्थात, अंतर्निहित नियमों में प्रयुक्त मैक्रोज़ दो वर्गों में आते हैं। वे इस प्रकार हैं -
मैक्रोज़ जो कार्यक्रमों के नाम हैं (जैसे कि CC)
मैक्रोज़ जिसमें प्रोग्राम्स (जैसे कि CFLAGS) के तर्क शामिल हैं।
नीचे कुछ सामान्य चर की एक तालिका है जो मेकफाइल्स के अंतर्निहित नियमों में कार्यक्रमों के नाम के रूप में उपयोग की जाती है -
| अनु क्रमांक | चर और विवरण |
|---|---|
| 1 | AR पुरालेख बनाए रखने का कार्यक्रम; डिफ़ॉल्ट `ar 'है। |
| 2 | AS विधानसभा फ़ाइलों को संकलित करने का कार्यक्रम; डिफ़ॉल्ट `के रूप में है। |
| 3 | CC सी कार्यक्रमों को संकलित करने का कार्यक्रम; डिफ़ॉल्ट `सीसी 'है। |
| 4 | CO आरसीएस से फ़ाइलों की जांच करने का कार्यक्रम; डिफ़ॉल्ट `सह’ है। |
| 5 | CXX सी + + कार्यक्रमों को संकलित करने का कार्यक्रम; डिफ़ॉल्ट `g ++ 'है। |
| 6 | CPP मानक आउटपुट के परिणामों के साथ, सी प्रीप्रोसेसर चलाने का कार्यक्रम; डिफ़ॉल्ट `$ (CC) -E’ है। |
| 7 | FC फोरट्रान और रैटफोर कार्यक्रमों को संकलित करने या प्रीप्रोसेस करने का कार्यक्रम; डिफ़ॉल्ट `f77 'है। |
| 8 | GET SCCS से फ़ाइल निकालने का कार्यक्रम; डिफ़ॉल्ट `प्राप्त 'है। |
| 9 | LEX स्रोत कोड में लेक्स व्याकरण को चालू करने के लिए प्रोग्राम; डिफ़ॉल्ट `लेक्स 'है। |
| 10 | YACC स्रोत कोड में याक व्याकरण को चालू करने के लिए उपयोग करने का कार्यक्रम; डिफ़ॉल्ट `याक 'है। |
| 1 1 | LINT स्रोत कोड पर लिंट चलाने के लिए उपयोग करने का कार्यक्रम; डिफ़ॉल्ट `लिंट’ है। |
| 12 | M2C मोडुला -2 स्रोत कोड को संकलित करने के लिए उपयोग करने का कार्यक्रम; डिफ़ॉल्ट `m2c 'है। |
| 13 | PC संकलित पास्कल कार्यक्रमों के लिए कार्यक्रम; डिफ़ॉल्ट `पीसी 'है। |
| 14 | MAKEINFO टेक्सिनफो स्रोत फ़ाइल को जानकारी फ़ाइल में बदलने का कार्यक्रम; डिफ़ॉल्ट `मेकइनफो 'है। |
| 15 | TEX TeX स्रोत से TeX dvi फाइलें बनाने का कार्यक्रम; डिफ़ॉल्ट `टेक्स’ है। |
| 16 | TEXI2DVI टेक्सिनफो स्रोत से TeX dvi फाइलें बनाने का कार्यक्रम; डिफ़ॉल्ट `texi2dvi’ है। |
| 17 | WEAVE TeX में वेब का अनुवाद करने का कार्यक्रम; डिफ़ॉल्ट `बुनाई 'है। |
| 18 | CWEAVE TeX में सी वेब का अनुवाद करने का कार्यक्रम; डिफ़ॉल्ट `cweave 'है। |
| 19 | TANGLE वेब को पास्कल में अनुवाद करने का कार्यक्रम; डिफ़ॉल्ट `उलझन 'है। |
| 20 | CTANGLE सी वेब को सी में अनुवाद करने का कार्यक्रम; डिफ़ॉल्ट `ctangle 'है। |
| 21 | RM किसी फ़ाइल को निकालने का आदेश; डिफ़ॉल्ट `rm -f 'है। |
यहाँ चरों की एक तालिका है जिसके मान उपरोक्त कार्यक्रमों के लिए अतिरिक्त तर्क हैं। इन सभी के लिए डिफ़ॉल्ट मान रिक्त स्ट्रिंग है, जब तक कि अन्यथा नोट न किया गया हो।
| अनु क्रमांक। | चर और विवरण |
|---|---|
| 1 | ARFLAGS संग्रह-अनुरक्षण कार्यक्रम देने के लिए झंडे; डिफ़ॉल्ट `आरवी 'है। |
| 2 | ASFLAGS अतिरिक्त झंडे कोडांतरक को देने के लिए जब स्पष्ट रूप से एक `.s 'या` .S' फ़ाइल पर लागू होते हैं। |
| 3 | CFLAGS सी कंपाइलर को देने के लिए अतिरिक्त झंडे। |
| 4 | CXXFLAGS सी कंपाइलर को देने के लिए अतिरिक्त झंडे। |
| 5 | COFLAGS आरसीएस सह कार्यक्रम को देने के लिए अतिरिक्त झंडे। |
| 6 | CPPFLAGS सी पूर्वप्रक्रमक और कार्यक्रमों को देने के लिए अतिरिक्त झंडे, जो इसका उपयोग करते हैं (जैसे सी और फोरट्रान संकलक)। |
| 7 | FFLAGS फोरट्रान कंपाइलर को देने के लिए अतिरिक्त झंडे। |
| 8 | GFLAGS SCCS को देने के लिए अतिरिक्त झंडे कार्यक्रम मिलते हैं। |
| 9 | LDFLAGS संकलक को देने के लिए अतिरिक्त झंडे जब वे लिंकर, 'ld' को लागू करने वाले हों। |
| 10 | LFLAGS लेक्स देने के लिए अतिरिक्त झंडे। |
| 1 1 | YFLAGS याक को देने के लिए अतिरिक्त झंडे। |
| 12 | PFLAGS पास्कल संकलक को देने के लिए अतिरिक्त झंडे। |
| 13 | RFLAGS Ratfor कार्यक्रमों के लिए फोरट्रान संकलक को देने के लिए अतिरिक्त झंडे। |
| 14 | LINTFLAGS लिंट देने के लिए अतिरिक्त झंडे। |
NOTE - आप '-R' या '-no-buildin-variables' विकल्प के साथ निहित नियमों द्वारा उपयोग किए जाने वाले सभी चर को रद्द कर सकते हैं।
आप कमांड लाइन पर मैक्रोज़ को परिभाषित कर सकते हैं जैसा कि नीचे दिखाया गया है -
make CPP = /home/courses/cop4530/spring02