2010-09-28 9 views
8

मैं जो निम्नलिखित पुस्तकालयों का उपयोग करता है 8 अन्य लोगों के साथ एक पार मंच सी ++ परियोजना पर काम कर रहा हूँ के साथ ग्रहण में एक पार मंच सी ++ परियोजना की स्थापना:पार मंच पुस्तकालयों

  • OpenCV लाइब्रेरी
  • बूस्ट सी ++ लाइब्रेरी

इस परियोजना क्रॉस-प्लेटफॉर्म तो सभी उपयोगकर्ताओं यथासंभव सरल बातें रखने के लिए प्लेटफ़ॉर्म-विशिष्ट कोड का उपयोग नहीं है, और, पर सहमत हुए हैं होने के लिए inteded है, सभी उपयोगकर्ताओं को अपने आईडीई के रूप में ग्रहण का उपयोग कर सकेंगे। हालांकि, कुछ विंडोज के लिए एक्लिप्स का उपयोग करेंगे जबकि अन्य लिनक्स के लिए ग्रहण का उपयोग करेंगे।

चूंकि परियोजना एसवीएन पर होस्ट की जाएगी, इसलिए हम अलग-अलग कॉन्फ़िगरेशन फ़ाइलों (जैसे फ़ाइलों को बनाने, ग्रहण परियोजना फाइल इत्यादि) के साथ संघर्ष से बचना चाहते हैं। कॉन्फ़िगरेशन को यथासंभव सरल रखने के लिए, हम एसवीएन के माध्यम से यथासंभव अधिकतर कॉन्फ़िगरेशन फ़ाइलों को साझा करना भी पसंद करेंगे।

मान लीजिए कि सभी उपयोगकर्ताओं ने सिस्टम चर को ठीक से कॉन्फ़िगर किया है और आवश्यक बिल्ड टूल्स (जैसे मेक, सेमेक इत्यादि) स्थापित किया है, और अपनी ग्रहण सेटिंग्स को ठीक से कॉन्फ़िगर किया है (लेकिन प्रोजेक्ट-विशिष्ट सेटिंग्स नहीं)।

एक बार प्रोजेक्ट को कॉन्फ़िगर करने के लिए प्रोजेक्ट को कॉन्फ़िगर कैसे करें और कॉन्फ़िगरेशन फ़ाइलों को रिपॉजिटरी पर साझा करने के लिए, ताकि दोनों विंडोज और लिनक्स उपयोगकर्ता एसवीएन रिपॉजिटरी से पुनर्प्राप्त कॉन्फ़िगरेशन फ़ाइलों को संशोधित किए बिना संकलित कर सकें?

(मैं पूरी तरह से समाधान की तलाश नहीं कर रहा हूं जो विशेष रूप से उन 2 पुस्तकालयों के लिए काम करेगा, इसलिए मैं एक सामान्य तरीके से कैसे कदम-दर-चरण स्पष्टीकरण की सराहना करता हूं जो मुझे आसानी से एक और लाइब्रेरी जोड़ने में सक्षम बनाता है।)

+0

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

+1

मैं वर्तमान में एक्लिप्स और एसवीएन के साथ एक क्रॉस-प्लेटफार्म ओपन-सीवी प्रोजेक्ट स्थापित करने की जांच कर रहा हूं। मुझे यह जानने में दिलचस्पी होगी कि आप कैसे पहुंचे? यह बहुत अच्छा होगा अगर आप अपने अनुभवों के आधार पर अपने प्रश्न का उत्तर देने की स्थिति में थे। – volting

उत्तर

0

जनरल चर्चा:

आप Cygwin या इसे करने के समान ग्नू Autotools toolchain विंडोज पर ग्रहण के लिए उपलब्ध बनाने के लिए कुछ स्थापित करना होगा: How to deal with Eclipse CDT+Cygwin?

एक बार अपने toolchain, ग्रहण, CDT और SVN कनेक्टर के साथ आपके देव पर तैयार हैं elopment मशीनों, निम्नलिखित चरणों के माध्यम से जाओ।

  1. ओपन ग्रहण और CDT पर स्विच करें: क्लिक करें विंडो> खुला परिप्रेक्ष्य> अन्य ... और चुनें C/C++
  2. चुनें: Eclipse-> फ़ाइल> New-> सी ++ परियोजना
  3. परियोजना नाम: दर्शक
  4. चुनें: परियोजना type-> जीएनयू Autotools-> नमस्ते विश्व सी ++ Autotools परियोजना
  5. क्लिक करें: अगली
  6. क्लिक करें: समाप्त
  7. परियोजना Explorer में राइट-क्लिक करें: viewer-> पुनः कॉन्फ़िगर परियोजना
  8. क्लिक करें: कंसोल-> चयनित कंसोल उपमेनू प्रदर्शित करें -> # सीडीटी ग्लोबल बिल्ड कंसोल। यदि "autoreconf -i" आउटपुट नाममात्र है, तो चरण 9 पर जाएं। यदि कंसोल रिपोर्ट करता है: sh: autoreconf: कमांड नहीं मिला है, तो प्रोजेक्ट बिल्ड पर्यावरण में autoreconf कमांड का पथ जोड़ें:
    1. राइट-क्लिक करें प्रोजेक्ट एक्सप्लोरर: दर्शक-> गुण-> सी/सी ++ बिल्ड-> पर्यावरण-> जोड़ें ...
    2. नाम: पथ
    3. मूल्य: path_to_autoreconf: $ {env_var: पथ}
    4. क्लिक करें: ठीक है
    5. क्लिक करें: लागू करें
    6. कदम पीछे जाएं 8.
  9. डबल क्लिक करें: परियोजना Explorer-> viewer-> src-> viewer.cpp
  10. कुछ कोड जोड़ें:

    शामिल <opencv/cv.h>

    < शामिल opencv/highgui.h >

    <cassert>

    पूर्णांक मुख्य (int argc, char * argv []) {

    ज़ोर शामिल हैं (argc > 1);

    सीवीएमएटी * img = cvLoadImageM (argv 1);

    cvNamedWindow (" चित्र ", सीवी_WINDOW_AUTOSIZE);

    cvShowImage (" चित्र ", आईएमजी);

    cvWaitKey (0);

    वापसी 0;

    }

  11. डबल क्लिक करें: परियोजना Explorer-> viewer-> configure.ac और AC_PROG_CXX नीचे निम्नलिखित कोड प्रविष्ट करें।

    AC_CHECK_LIB ([opencv_core], [cvSetZero], [], [])

    AC_CHECK_LIB ([opencv_highgui], [cvShowImage], [], [])

    AC_CHECK_LIB ([boost_regex -mt], [regexecA], [BOOST_LIB_SUFFIX = "- एमटी"], [BOOST_LIB_SUFFIX = ""])

    AC_SUBST (BOOST_LIB_SUFFIX)

  12. डबल क्लिक करें: परियोजना Explorer-> viewer-> src -> Makefile.am और दर्ज करें निम्नलिखित कोड। >

    bin_PROGRAMS = दर्शक

    viewer_SOURCES = openCvFocusIssue।सीपीपी

    viewer_LDFLAGS = -lboost_regex @ BOOST_LIB_SUFFIX @ -lopencv_core -lopencv_highgui

  13. दोहराएँ चरण 8, autoreconf (पुनः कॉन्फ़िगर परियोजना)
  14. क्लिक करें: हथौड़ा क्लिक करके परियोजना Explorer-> दर्शक
  15. परियोजना बिल्ड टूलबार में। यदि आपको हथौड़ा नहीं दिखाई देता है, तो विंडो-> खुला परिप्रेक्ष्य-> अन्य ... और सी/सी ++ का चयन करें। यदि सी/सी ++ दिखाई नहीं देता है, तो सीडीटी इंस्टॉल करें।
  16. क्लिक करें: प्रोजेक्ट एक्सप्लोरर-> व्यूअर और फिर रन-> रन, फिर रन के रूप में विंडो-> स्थानीय सी/सी ++ एप्लिकेशन, फिर लॉन्च डीबग कॉन्फ़िगरेशन चयन विंडो-> gdb/mi में एंटर दबाएं। आपको हैलो वर्ल्ड देखना चाहिए।
  17. ग्रहण छोड़ें और दर्शक परियोजना निर्देशिका पर नेविगेट करें।
  18. कमांड लाइन पर, इस मुद्दे को जिले
  19. सुनिश्चित करें कि आप एक दर्शक-1.0.tar.gz या समान नाम वाले फ़ाइल मिल गया, और फिर इसे हटाने: rm दर्शक-1.0.tar.gz
  20. कमांड लाइन पर , समस्या
  21. एक ही स्थान पर, समस्या विचलित करें।
  22. वर्कस्पेस निर्देशिका में नेविगेट करें जिसमें दर्शक प्रोजेक्ट है।
  23. संपूर्ण व्यूअर निर्देशिका को उस निर्देशिका में ले जाएं जिसमें svn चेकआउट है जिसमें आप दर्शक प्रोजेक्ट को रखना चाहते हैं।
  24. निर्देशिका को बदलें जहां आपने दर्शक को अभी स्थानांतरित किया था।
  25. SVN दर्शक & & SVN ci -m "जोड़ा ग्रहण-Autotool परियोजना"
  26. ओपन ग्रहण जोड़ सकते हैं और सुनिश्चित करें कि आप एक SVN कनेक्टर स्थापित है बनाते हैं।
  27. प्रोजेक्ट एक्सप्लोरर व्यू से "दर्शक" प्रोजेक्ट को हटाएं।
  28. ओपन ग्रहण और टीम परिप्रेक्ष्य में यह एसवीएन रिपोजिटरी चेकआउट जोड़ें।
  29. अपने एसवीएन रिपोजिटरी चेकआउट से दर्शक प्रोजेक्ट आयात करें।
  30. सी/सी ++ परिप्रेक्ष्य पर वापस स्विच करें और मज़े करें।
0

दो सुझाव:

  • उपयोग cmake: मैं इस उपकरण से प्यार है। एक सीखने की अवस्था में थोड़ा सा है लेकिन यदि आपको यह सही लगता है तो सभी परियोजनाओं में सेमेक फाइलें शामिल होंगी और जब कोई व्यक्ति पहले इसे चेक आउट करता है तो वे जेनरेट (या वीसी ++ प्रोजेक्ट फाइल इत्यादि) उत्पन्न करने के लिए सेमेक चलाते हैं। लिनक्स या विंडोज़ के लिए सभी अलग-अलग नियम एक की आवश्यकता हो सकती है।

या परियोजना के लिए एक बुनियादी config में

  • चेक, तो Git करने के लिए उन कॉन्फ़िगरेशन जोड़ें/SVN उपेक्षा तो कोई भी कभी भी उन्हें फिर से है, तो जाँच करता है जब आप पहली बार के लिए चेकआउट आप अपनी कॉन्फ़िगरेशन चलाना होगा लेकिन इसके बाद इसे ओवरराइट नहीं किया जाएगा।