2012-06-25 16 views
8

मुझे मेकफ़ाइल ट्यूटोरियल में निम्न पंक्तियां मिलीं, लेकिन मुझे बोल्ड लाइनों में कुछ समस्या है।वाइल्डकार्ड मेकफ़ाइल में क्या मतलब है?

1 लाइन में, अगर मैं

program_C_SRCS:=$(*.c) 

यह काम नहीं करता लिखें। तो कृपया मुझे बताएं कि वाइल्डकार्ड शब्द यहां क्या कर रहा है। क्या यह शब्द केवल मेकफ़ाइल के लिए विशिष्ट है?

ट्यूटोरियल में यह लिखा गया है कि दूसरी पंक्ति परीक्षण प्रतिस्थापन करेगी। क्या कोई मुझे इस पाठ प्रतिस्थापन के बारे में कुछ बता सकता है?

कृपया मुझे क्षमा करें यदि मेरे प्रश्न बहुत बुनियादी हैं क्योंकि मैं filestuff बनाने के लिए नया हूँ।

link of tutorial

CC:=g++ 
program_NAME:=myprogram 
**program_C_SRCS:=$(wildcard *.c)** # 1 line 
program_CXX_SRCS:=$(wildcard *.cc) 
**program_C_OBJ:=$(program_C_SRCS:.c=.o)** # 2 line 
program_CXX_OBJ:=$(program_CXX_SRCS:.c=.o) 
program_OBJ:= $(program_C_OBJ) $(program_CXX_OBJ) 

उत्तर

10

माना आपके पास दो स्रोत फ़ाइलें है। foo.c और bar.c

program_C_SRCS:=$(wildcard *.c) # 1 line 

wildcard फ़ंक्शन सिंटैक्स बनाएं। परिवर्तनीय program_C_SRCS में अब foo.c bar.c (शायद उस क्रम में नहीं) का मूल्य होगा।

program_C_OBJ:=$(program_C_SRCS:.c=.o) # 2 line 

यह substitution reference है। यह पाठ को बदल देता है, एक सबस्ट्रिंग को दूसरे के साथ बदल देता है। परिवर्तनीय program_C_OBJ में अब foo.o bar.o मान है।

1

फ़ाइल बनाने में वाइल्डकार्ड कार्ड फ़ंक्शन का उपयोग सभी स्रोत फ़ाइलों को किसी विशेष एक्सटेंशन के साथ सूचीबद्ध करना है। उदाहरण के लिए:

program_C_SRCS:=$(*.c) // In this the variable program_C_SRCS will have all the files with ".c" extension. 

मान लीजिए अगर आप .o फ़ाइलों को .c फ़ाइलों को कनवर्ट करने तो निम्न सिंटैक्स उपयोगी हो सकता है चाहता हूँ:

program_C_OBJS:=$(patsubst %.c,%.o,$(wildcard *.c)) 
संबंधित मुद्दे