2009-06-02 6 views
6

मेरे पास स्रोत फ़ोल्डर में मेरी सभी स्रोत फ़ाइलें हैं, मेकफ़ाइल मेकफ़ाइल फ़ोल्डर में है और मैं ऑब्जेक्ट फ़ोल्डर में सभी ऑब्जेक्ट फ़ाइलों को रखना चाहता हूं। यह एक सी परियोजना है Iam पर काम कर रहा है। ये सभी तीन फ़ोल्डर्स प्रोजेक्ट नामक फ़ोल्डर में हैं।nmake मेकफ़ाइल को एक अलग निर्देशिका में ऑब्जेक्ट फ़ाइलों को रखने के लिए

परियोजना फ़ोल्डर शामिल हैं:

... 
SOURCE_DIR=..\Source 
OUTPUT_DIR=..\Objects 
.c.obj: 
    $(CC) $(SOURCE_DIR)\$*.c /Fo$(OUTPUT_DIR)\$*.obj 
... 

लेकिन इस: स्रोत Makefile वस्तुओं

iam makefile स्रोत फ़ोल्डर से स्रोत संकलित करने के लिए प्राप्त करने के लिए एक तरह से पता लगाने की कोशिश, मैं का उपयोग कर की कोशिश की है काम नहीं कर रहा है, मैं यह नहीं जानता कि myfile.obj

+0

कृपया, उस भाग को जोड़ें जो निर्दिष्ट करता है कि मेकफ़ाइल को क्या बनाना चाहिए। – Bahbar

उत्तर

0

यह सचमुच don't know how to make myfile.obj कह तो रहा है, और नहीं don't know how to make ..\Objects\myfile.obj तो आपकी समस्या कहीं और है - makefile में कुछ वर्तमान निर्देशिका में एक वस्तु फ़ाइल के लिए पूछ रहा है।

नियम बनाने के लिए myfile.obj की आवश्यकता क्या है? मुझे लगता है कि उस नियम में आप निर्भरता के रूप में $(OUTPUT_DIR)\myfile.obj निर्दिष्ट करने में विफल रहे हैं।

0

आप दृश्य स्टूडियो का उपयोग कर रहे हैं, तो कभी-कभी आपको त्रुटि संदेश मिलता है:

"बनाने के लिए पता नहीं कैसे '.obj'"

मैं 'Makefile' खोलकर हल करने में सक्षम था और टिप्पणी के नीचे की रेखाओं को अपरिवर्तित करता है जो कहता है "32 बिट बाइनरी आउटपुट करने के लिए विजुअल स्टूडियो 2010 में संकलित करते समय इन्हें असम्बद्ध करें"। उस टिप्पणी को ढूंढें जो आपके विजुअल स्टूडियो संस्करण और आपके आर्किटेक्चर (32-बिट/64-बिट) से मेल खाती है और इसके नीचे की रेखाओं को असम्बद्ध करती है!

0

आपको लक्ष्य जोड़ना चाहिए, वर्तमान निर्देशिका को उस निर्देशिका में बदलना चाहिए जहां आप इच्छित फाइलें बनाना चाहते हैं। एनएमके नमूना मेकफ़ाइल फ़ाइल निम्नानुसार है। नमूना nmake में वर्तमान निर्देशिका से a.c b.c संकलित करता है और objs $ (OBJ_FILES_DIR) निर्देशिका को स्थान देता है और $ (OUTDIR) निर्देशिका में SOME_STATIC.LIB बनाता है।

# commmand to launch Makefile 
nmake OBJ_FILES_DIR=my_obj_dir OUTDIR=my_lib_dir 

# Makefile 
STATICLIB = SOME_STATIC.LIB 
OBJS = a.obj b.obj # objs in lib 
O = $(OBJ_FILES_DIR) 
S = $(MAKEDIR) # remember source dir where a.c b.c reside and current dir from which nmake launched. 

.PHONY: $(STATICLIB) 
.PHONY: CHDIR 

$(STATICLIB): CHDIR $(OUTDIR)$(STATICLIB) # 

CHDIR: 
    -md $(O) 
    cd $(O) 

all: $(STATICLIB) 

$(OUTDIR)$(STATICLIB): $(OBJS) 
    $(AR) $(ARFLAGS) -out:[email protected] $(OBJS) 

{$(S)}.c.obj:: 
    $(CC) $(WFLAGS) $(CFLAGS) -c $< 
संबंधित मुद्दे

 संबंधित मुद्दे