2012-03-24 13 views
5

मेरे C++ परियोजना निम्नलिखित संरचना हैसंकलन एकाधिक स्रोत निर्देशिका ++

src 
| 
|source1.cpp 
|source2.cpp 
| 
|<srcfolder1> 
|__ source11.cpp 
|__ source12.cpp 
| 
|<srcfolder2> 
|__ source21.cpp 
|__ source22.cpp 

के रूप में देखा जा सकता है एकाधिक स्रोत फ़ाइलों के साथ एक से अधिक फ़ोल्डर नहीं है। मैं सभी स्रोत फ़ाइल को एक .o फ़ाइल में संकलित करने के लिए g ++ क्या आदेश देता हूं?

+0

एआरएम, इसे सभी स्रोत फाइलें दें? –

+0

लगभग 100 स्रोत फ़ाइलें हैं। कमांड लाइन प्रॉम्प्ट – pdeva

+4

पर उन्हें एक-एक करके सूचीबद्ध करने के लिए बहुत से लोग मुझे लगता है कि जटिल परियोजनाओं में सामान्य तरीका प्रत्येक उप-फ़ोल्डर में मेकफ़ाइल रखना और उन्हें मूल फ़ोल्डर्स से आमंत्रित करना है। बीटीडब्ल्यू, आप एक आईडीई का उपयोग क्यों नहीं कर रहे हैं? – enobayram

उत्तर

5

आप कई स्रोत फ़ाइलें हैं, तो आप वास्तव में एक Makefile लिखने पर विचार करना चाहिए: http://mrbook.org/tutorials/make/

आप उदाहरण के लिए एक वाक्य रचना इस के समान एक से अधिक फ़ाइलों को संकलित करने के (Makefile में) का उपयोग कर सकते हैं:

%.o : $(SRC_FOLDER)/%.cpp 
    $(CXX) -c -o [email protected] $< 
+0

रोले, मेरा मेकफ़ाइल ज्ञान अब केवल वही है जो मैंने पढ़ा है वह लेख जो आपने लिंक किया है;) क्या आप कृपया बताए गए आदेश की व्याख्या कर सकते हैं। % साइन के लिए क्या खड़ा है? – pdeva

+2

ऑनलाइन और अधिक ट्यूटोरियल होना चाहिए जो मुझे यहां समझाए जाने से बेहतर समझाएंगे। मूल रूप से उपर्युक्त पढ़ता है: SRC_FOLDER (प्रत्येकत्र परिभाषित) में प्रत्येक स्रोत फ़ाइल के लिए, CXX में परिभाषित कमांड लाइन तर्क का उपयोग करके, flags -c -o के साथ संकलित करें, उन्हें cpp फ़ाइल के समान नाम पर नामित करें लेकिन अंत में .o । उपरोक्त मेरा संपादन भी देखें – Rolle

2

आप बिल्ड सिस्टम का भी उपयोग कर सकते हैं जो आपके लिए वास्तविक मेकफ़ाइल उत्पन्न करेगा। यह महत्वपूर्ण हो जाता है क्योंकि आप अपनी परियोजना का विस्तार करने और अच्छा बनाए रखने का प्रयास करते हैं, मेकफ़ाइल एक कठिन काम बन सकता है। मेरा सुझाव है कि आप एक सीखने के लिए कुछ समय बिताएं। उदाहरण Scons, जीएनयू autotools, qmake, और Cmake, दूसरों के बीच हैं। मैं qmake या Cmake के उपयोग को उच्चतम रूप से प्राप्त करता हूं क्योंकि वे दोनों क्रॉस-प्लेटफॉर्म और सीखने में आसान हैं।

आपके पास एक अन्य विकल्प है जो केवल आईडीई का उपयोग करना है! लिनक्स पर सबसे अच्छा c++ आईडीई जो मुझे पता है, और क्रॉस-प्लेटफ़ॉर्म है, Qt Creator है। हुड के तहत यह qmake और Cmake परियोजनाओं दोनों का समर्थन करता है।

1

आप दृश्य स्टूडियो के साथ काम करने के लिए उपयोग किया जाता है और आप लिनक्स के तहत अपने फ़ाइलों को संकलित करने के है, तो कमांड लाइन पर सब कुछ कर शुरू करने के लिए कोई जरूरत नहीं है;)

तरह GradGuy ने कहा, QtCreator है एक महान आईडीई और मैं इसे अपने गैर-विंडोज बिल्डों के लिए भी उपयोग करता हूं। हालांकि, अगर आप कोई जीयूआई सामान नहीं करते हैं, तो आप इसे cmake के साथ एक साथ उपयोग करना चाहेंगे क्योंकि क्यूटी ज्यादातर जीयूआई के बारे में है।

cmake (वी.एस. '.sln फ़ाइलों की तरह) समाधान फ़ाइलों के लिए एक जनरेटर क्या आईडीई या आप ऑपरेटिंग सिस्टम आप चल रहे हैं की स्वतंत्र है। यह एक निचला दृष्टिकोण है जहां आपको जाने के लिए बहुत कम आवश्यकता है।

यहां कुछ युक्तियां आप

  • शुरू कर दिया qtcreator और cmake स्थापित
  • एक फ़ाइल cmake जहां अपने स्रोत फ़ाइलें हैं और जहां उन्हें खोजने के लिए कह रही बारे में मिल रहे हैं।
  • src ऊपर फ़ोल्डर में एक फ़ाइल CMakeLists.txt बना सकते हैं और निम्नलिखित के अंदर लिखें:

    project(myProject) 
    
    # set your include directories (if you have any) 
    include_directories(include) 
    
    # tell cmake what what are your source files 
    set(MY_CPP_FILES 
        src/source1.cpp 
        src/source2.cpp 
        src/srcfolder1/source11.cpp 
        src/srcfolder1/source12.cpp 
        src/srcfolder2/source21.cpp 
        src/srcfolder2/source22.cpp) 
    
    # if you are creating an executable then do so like this 
    # note that ${MY_CPP_FILES} will replace it with its content 
    add_executable(myExec ${MY_CPP_FILES}) 
    
    # if you instead want a library, do it like so 
    add_library(myStaticLib STATIC ${MY_CPP_FILES}) # create a static library 
    add_library(mySharedLib SHARED ${MY_CPP_FILES}) # create a shared library 
    
  • अब

    शुरू QtCreator और File -> Open File or Project चुनें और आपके ड्राइव

  • अब
  • पर CMakeLists.txt चयन आप का चयन करने के लिए कहा जाएगा एक पथ जहां परिणाम संग्रहीत किए जाएंगे (साथ ही सभी इंटरमीडिएट फाइलें)
  • हिट Run CMake
  • और आखिरकार Build -> Build All

शुभकामनाएं चुनें!

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