2011-03-09 13 views
10

मेरी आवश्यकता सरल है। मुझे msys के साथ MinGW का उपयोग करके विंडोज़ पर Googletest संकलित करना और उपयोग करना है। क्या किसी को ऐसा करने का अनुभव है?msw के साथ mingw का उपयोग कर विंडोज़ पर googletest को संकलित कैसे करें?

उत्तर के लिए धन्यवाद।

+0

कृपया बताएं कि क्या गलत हो रहा है। – LumpN

+0

मैंने कुछ प्रगति की है। ऐसा लगता है कि यह एक अजगर के बिना स्थापित नहीं कर सकता जो मेरे पास नहीं है। मैं इसे हल करने के लिए अब बांध रहा हूँ। –

उत्तर

12

मुझे कुछ समय लगा लेकिन मैंने इसे समझ लिया। यहां किसी भी समस्या का सामना करने वाले व्यक्ति के लिए मार्गदर्शिका दी गई है।

संकलित करने के लिए GoogleTest विंडोज पर यह निर्देशों का पालन करें सक्षम होने के लिए:

  1. मुझे लगता है आप MSYS साथ MinGW है istalled।

  2. आधिकारिक साइट http://www.cmake.org/ से सीएमके डाउनलोड और इंस्टॉल करें। Win32 इंस्टॉलर संस्करण का उपयोग करें। एक बार जब आप इंस्टॉलेशन प्रक्रिया को "xxx/cmake/bin" से "xxx/MinWG/bin" से निष्पादन योग्य फ़ाइलों को कॉपी कर लेते हैं।

  3. http://www.python.org/ से पायथन डाउनलोड और स्थापित करें। फिर, विंडोज इंस्टालर ठीक काम करता है। एक बार जब आप स्थापना प्रक्रिया पूरी कर लेते हैं तो "python.exe" फॉर्म python फ़ोल्डर को "xxx/MinWG/bin" पर कॉपी करें।

  4. http://code.google.com/p/googletest/ से नवीनतम स्थिर GoogleTest डाउनलोड करें और इसे कुछ फ़ोल्डर में अनपैक करें।

  5. MSYS टर्मिनल चलाएं और निम्न आदेश निष्पादित करें।

    cd xxx/gtest-x.x.x 
    cmake -G "MSYS Makefiles" 
    make 
    
  6. यदि आपके पास pthread से संकलन त्रुटियों these निर्देशों का पालन करें।

  7. अपने मिनीजीडब्ल्यू जीसीसी में शामिल फ़ोल्डर "xxx/gtest-x.x.x/include" शामिल करें। पुस्तकालय फ़ाइलों को "xxx/gtest-x.x.x/*। A" को अपने MinGW gcc lib में कॉपी करें।

  8. जब आप परीक्षण संकलित करते हैं तो gcc में "-lgtest" पैरामीटर जोड़ें।

संपादित टिप्पणीकारों ठीक कह रहे हैं। निष्पादन योग्यों का मुकाबला मेरे लिए काम करता था लेकिन आम तौर पर यह एक अच्छा अभ्यास नहीं है। इसके बजाय symbolic link का उपयोग करने का प्रयास करें।

+0

क्यों उन एक्जिक्यूटिव को कॉपी और सिमलिंक नहीं करते? – mbx

+0

वास्तव में दोनों सीएमके और पायथन स्थिर रूप से निर्माण नहीं कर रहे हैं, इसलिए उनमें से दोनों काम नहीं करते हैं (क्रैश और अनंत पाश) जब msys खोल से बुलाया जाता है। – mbx

1

वैकल्पिक रूप से सामान्य MSYS/Mingw मेक का उपयोग करके googletest बनाना भी संभव है।

तो यहाँ

मेरी वैकल्पिक तरीका है:

  1. यकीन MSys/Mingw अपने Windows पर स्थापित है और पथ वातावरण इसे करने के लिए

  2. खुला एक cmd खिड़की सेट किया गया है - आप सेट कर सकते हैं पथ स्पष्ट रूप से यहाँ भी अनज़िप googletest निर्देशिका

  3. कॉल कॉन्फ़िगर वाई के लिए

  4. सीडी वें sh (MSys का हिस्सा): sh configure

  5. कॉल make ->libgtest.a बनाया जाना चाहिए। यह आपके googletest-directory lib/.libs उपनिर्देशिका

  6. आपके सिस्टम में libgtest.a को एकीकृत करने के तरीके के googletest की रीडमी देखें। संकलित करने के तरीके के googletest wiki में googletest प्राइमर भी देखें। वैकल्पिक रूप से gcc के लिए लाइब्रेरी पथ निर्दिष्ट करें और अपने परीक्षण प्रोजेक्ट निष्पादन योग्य से लिंक करने के लिए -lgtest जोड़ें।

  7. जब आपके परीक्षण किया कोड में इस बात पर ज़ोर के लिए (जिसका अर्थ है अपने lib या आवेदन में दावा है, googletest में नहीं) की जाँच करने के ASSERT_DEATH मैक्रो का उपयोग, फोन SetErrorMode - उदाहरण के मुख्य:

    #include <windows.h> 
    #include "gtest/gtest.h" 
    
    int main (int argc, char** argv) 
    { 
        // this prevents annoying error message boxes popping up 
        // when assert is called in your program code 
        SetErrorMode(SEM_NOGPFAULTERRORBOX); 
        ::testing::InitGoogleTest(&argc, argv); 
        return RUN_ALL_TESTS(); 
    } 
    
1

आप डॉन ' जब तक आप उन्हें अपने रास्ते में रखते हैं तब तक द्विआधारी की प्रतिलिपि बनाने की आवश्यकता नहीं है। पायथन और सीएमके स्थापित करें। उन्हें अपने msys में टेस्ट (MinGW कंसोल)

which cmake 
which python 

आप पथ को देखते हैं, तो आप बाइनरी है। यदि नहीं, तो अपने पर्यावरण चर> पथ के मार्ग को जोड़ने या बस (अद्यतन स्थापना पथ यदि आवश्यक हो तो)

export PATH=$PATH:/c/Program Files (x86)/CMake/bin/cmake.exe:/c/Python27/python.exe 

msys के भीतर अपडेट तो फिर तुम सुझाव के रूप में निर्माण कर सकते हैं:

cd xxx/gtest-x.x.x 
cmake -G "MSYS Makefiles" 
make 

टेस्ट सब कुछ काम करता है:

cd make 
make 
./sample1_unittest.exe 
2

cmake/अजगर के बिना libgtest.a निर्माण करने के लिए है, लेकिन केवल MinGW बनाने का उपयोग कर, gtest अब उस में एक सादे पुराने makefile के साथ एक 'बनाना' फ़ोल्डर है।

  1. सुनिश्चित करें कि, पथ में mingw \ bin है ('g ++' या कुछ चलाने का प्रयास करें)।
  2. gtest 'googletest \ make' फ़ोल्डर दर्ज करें और 'मेक' चलाएं।
  3. परीक्षण करने के लिए, 'sample1_unittest' चलाएं (gtest नमूना परीक्षण आउटपुट दिखाना चाहिए)।
  4. पुस्तकालय 'libgtest.a', रन 'ar -rv libgtest.a gtest-all.o'

उत्पन्न करने के लिए पुस्तकालय बनाया कोई dll के उत्पन्न के साथ एक पूर्ण स्थिर पुस्तकालय है।

यह सब होना चाहिए।

वैसे, यह googlemock बनाने के लिए भी काम करता है, बस googletest के बजाय googlemock फ़ोल्डर दर्ज करें, और उसी प्रक्रिया का पालन करें।

+0

धन्यवाद @ जेस्पर-मैथिसन ने यह काम किया। अगर किसी को ld.exe की त्रुटि का सामना करना पड़ता है तो lpthread नहीं मिल सका। Mingw चलाने का प्रयास करें- [link] (http://mingw-users.1079350.n2.nabble.com/GCC-doesn-t-work-quot-ld-exe-cannot- की टिप्पणी में उल्लिखित libpthreadgc-dev इंस्टॉल करें लगता है-lpthread-quot-td7584243.html)। धन्यवाद –

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