2012-10-06 26 views
6

हाय मैंने विजुअल स्टूडियो पर निर्भर होने के बजाय कमांड लाइन और मेकफ़ाइल के माध्यम से प्रोग्राम बनाने का प्रयास करने और सीखने का फैसला किया। .obj फ़ाइलों और लिंकिंग में संकलन की प्रक्रिया के साथ खुद को परिचित करने के बाद, मैं एनमेक पर चले गए। मैंने .obj फ़ाइलों में एकाधिक फ़ोल्डरों में स्थित स्रोत फ़ाइलों को आज़माने और संकलित करने के लिए एक बुनियादी मेकफ़ाइल लिखा है, .lib फ़ाइलों में .obj फ़ाइलों के प्रत्येक फ़ोल्डर को लिंक करें और फिर .lib फ़ाइलों को .exe फ़ाइल में लिंक करें।एनएमके पैटर्न नियम

CC=cl /c /EHsc /Fo 
LIB=lib /OUT: 
LINKER=link /OUT: 
EXEC_NAME=Test.exe 
DEL=del 
MAKE=nmake 
OUT=.\out 

all: $(OUT)\*.lib 
    $(LINKER)$(EXEC_NAME) *.lib 

clean: 
    $(DEL) $(OUT) 

rebuild: 
    $(MAKE) clean 
    $(MAKE) all 

$(OUT)%.lib: $(OUT)\%\*.obj 
    $(LIB)%.lib $(OUT)%\*.obj 

%(OUT)\%\: 
    $(CC)$(OUT)\%\ .\%\*.cpp 

जब मैं nmake all साथ इसे चलाने के लिए कोशिश यह मुझसे कहता है: NMAKE : fatal error U1073: don't know how to make '.\out\*.lib'

अग्रिम धन्यवाद।

उत्तर

4

इस सवाल को साढ़े सालों से समझ में नहीं लिया गया था लेकिन हाल ही में 4 अपवॉट आकर्षित हुए हैं।

वास्तव में कोई प्रश्न नहीं बताया गया है लेकिन निहित प्रश्न यह है: क्यों नहीं nmake मेरे मेकफ़ाइल में%-Pattern नियमों का पालन नहीं कर सकता है?

इसका उत्तर एमएस nmake% -pattern नियमों का समर्थन नहीं करता है। The documentation of MS nmake और इसके inference rules आसानी से पाए जाते हैं।

GNU make और कुछ अन्य टूल औजार %-pattern rules का समर्थन करते हैं। स्पष्ट ब्लंडर के कारण यहां मेकफ़ाइल जीएनयू make में भी विफल हो जाएगी।