2010-12-06 10 views
11

के साथ कैसे काम करें मैं एक नौसिखिया हूं और मुझे कोई समस्या है! मुझे एक सी ++ कोड के साथ काम करना है और मुझे नहीं पता कि इसे कैसे आयात किया जाए और इसे ग्रहण पर कैसे संकलित किया जाए (मैंने इसे कमांड लाइन द्वारा संकलित किया)। कोड एक विशेष संरचना है और यह इस तरह से आयोजित किया जाता है:ग्रहण C++ मौजूदा मेकफ़ाइल

repos____lib____configure (execute the configure file inside the libraries folders) 
        I   I___makefile (execute the make file inside the libraries folders, 
                 requires make/make.def) 
     I   I___ib1____.cpp 
     I   I   I____.h 
     I   ...   I____configure (it requires make/configure_lib and 
                   make/configure_includes 
     I   ...   I____makefile (generated by configure) 
     I   I___lib2___.... 
     i   I___....... 
     I   I___libn____.cpp 
     i      I____.h 
     i      I____configure 
     i      I____makefile (generated by configure) 
     I 
     I___make(folder)__bashrc (are set the some environment variables) 
     I        I__configure_bin 
     I        I__configure_includes 
     I        I__configure_lib 
     I        I__make.def (are set all the include path and library path used 
     I               in the configure file) 
     I___application__main.cpp 
            I__configure 
            I__makefile(generated by the configure file) 

यकीन है कि तुम मेरी समस्या को समझते हैं होने के लिए ... (यकीन है कि ... :))

पहले कॉन्फ़िगर फ़ाइल है :

cd lib1; ./configure 
cd ../lib2; ./configure 
..... 
.... 
cd ../libn; ./configure 
cd 

और पहली makefile

include /media/Dati/WORKHOME/repos/make/make.def 

है इस makefile है पूरे पुस्तकालय

lib: 
    make -C lib1 
    make -C lib2 
    make -C libn 

के लिए कॉन्फ़िगर फ़ाइल (lib1 अंदर एक) का एक उदाहरण:

#!/usr/bin/perl 

$INC = '$(OPENCVINC) $(FLTKINC) $(DC1394V2INC)'; ##<-DEFINED IN /make.def 
$LIB = '$(OPENCVLIB) $(FLTKLIB) $(DC1394V2LIB)';  ##################### 

#------------------------------------------------------------------------------- 

require '/media/Dati/WORKHOME/repos/make/configure_lib'; 
print "Created Makefile.\n"; 

# this will create a include file for the whole directory, 
# using the template <dirname>.h.templ 
require '/media/Dati/WORKHOME/repos/make/configure_includes'; 
print "Created $libname.h\n"; 

ग्रहण के बिना यह संकलन lib फ़ोल्डर में सरल

  1. प्रकार /.configure है
  2. प्रकार
  3. एप्लिकेशन फ़ोल्डर
  4. पर जाएं
  5. प्रकार कॉन्फ़िगर
  6. प्रकार बनाने
  7. कार्यक्रम

मेरे सवाल है .... ग्रहण में चला ??? मैंने मेकफ़ाइल प्रोजेक्ट के रूप में आयात/आयात मौजूदा कोड के साथ तीन आयात किए लेकिन अब मुझे नहीं पता कि इसे कैसे संकलित करें। क्या आप कृपया मेरी मदद कर सकते हैं? यह महत्वपूर्ण है!

आपको बहुत बहुत गैब्रिएल

+4

सुनिर्मित के +1 और 6 प्रतिनिधि के साथ, एक व्यक्ति के लिए सवाल तैयार किया। (: –

+0

@ किरील: मैं सहमत हूं – neuro

उत्तर

1

आप "makefile परियोजना के रूप में आयात मौजूदा कोड" का उपयोग करके सही काम किया है धन्यवाद। अब ग्रहण करें कि उसे कॉल करने और अपने मेकफ़ाइल का उपयोग करने की आवश्यकता है। लेकिन आपकी बिल्ड प्रक्रिया न केवल बनाई गई है।

एक समाधान एक मेकफ़ाइल लिखना है जो आपके सभी निर्माण चरणों को कॉल करता है। कुछ की तरह:

all: 
    cd dir1 && ./configure && make 
    cd dir2 && ./configure && make 
    etc. 

my2c

संपादित करें:

मैं वर्तमान में कोई ग्रहण स्थापित किया है, इसलिए मैं नहीं भेज सकते हैं आप चरणों detailled ... खेद

+0

@ गैब्रिएल: यह सही तरीका है। स्टैक ओवरफ्लो अन्य फोरम से अलग है क्योंकि यह अच्छी तरह से लिखित प्रश्नों और उत्तरों पर जोर देता है। प्रश्न/उत्तर पर टिप्पणी करने और यदि आवश्यक हो तो उन्हें संपादित करने का तरीका है। इस तरह आप अच्छी तरह से लिखित और सही उत्तरों के साथ समाप्त होते हैं, न कि बहुत सारी टिप्पणियों/उत्तर/उत्तरों के साथ ... – neuro