2011-09-06 23 views
14

के लिए बूस्ट 1.47 संकलित करें विंडोज सीई के लिए बूस्ट लाइब्रेरी बनाने की कोशिश करने वाले लोगों के बारे में वास्तव में कुछ जानकारी है, लेकिन किसी ने भी सफलता की सूचना नहीं दी है या ऐसा करने के लिए आवश्यक कदम भी दिए हैं। दो नवीनतम रिलीज (1.46 और 1.47) के साथ रिलीज नोट्स ने उल्लेख किया है कि उनके परीक्षण कंपाइलरों में से एक "विज़ुअल सी ++, विंडोज मोबाइल 5, एसटीएलपोर्ट: 9.0 के साथ" था, जो ऐसा लगता है कि सफलता प्राप्त की गई है (एक साइड नोट के रूप में दिया गया संकलक दिलचस्प है क्योंकि नवीनतम एसटीएलपोर्ट मैं डाउनलोड करने में सक्षम हूं 5.2.1 है। क्या मुझे कुछ याद आ रहा है?)।विंडोज सीई

जो पोस्ट मैंने पाया है वह यहां मौजूद फाइल के चारों ओर घूमती प्रतीत होती है: http://www.boost.org/development/tests/trunk/VeecoFTC.html। बात यह है कि, मैं ईमानदारी से यह नहीं जानता कि इसका उपयोग कैसे किया जाए। मैं विंडोज सीई के लिए एसटीएलपोर्ट बनाने में सक्षम था, लेकिन बूस्ट हो रही मार्गदर्शिका गाइड (http://www.boost.org/doc/libs/1_47_0/more/getting_started/windows.html) के बाद मैं बूस्ट.बिल्ड मंच पर फंस गया। क्या मुझे सीई के लिए संकलन करने के लिए इस बिंदु पर कॉन्फ़िगर करने की आवश्यकता है? मुझे नहीं पता कि कौन से कदम उठाने हैं और कुछ मार्गदर्शन की सराहना करेंगे।

ये कदम मैं अब तक का पालन किया है:

  1. Windows CE के लिए संकलित STLport (प्रलेखन सुंदर सभ्य था, यह भी मुश्किल साबित नहीं हुआ)।
  2. आरंभ करने की मार्गदर्शिका के अनुसार बूस्ट.बिल्ड स्थापित करें। मैं इस चरण पर थोड़ा सा अशक्त हूं, क्योंकि bootstrap.bat फ़ाइल "ntx86" और "ntx86_64" के लिए विशिष्ट प्रतीत होती है। क्या मैं पहले से ही खराब हो गया हूँ?

इस बिंदु पर, यह सोचते हैं कि मैं चीजों को सही ढंग से किया है, मैं की तरह

b2 --build-dir=build-directory toolset=toolset-name --build-type=complete stage 

कुछ के साथ बी 2 चलाने के लिए मुझे लगता है अपने निर्माण निर्देशिका उपसर्ग मैं Boost.Build के लिए इस्तेमाल किया है की जरूरत है, का निर्माण प्रकार और चरण दिया जाएगा, लेकिन मुझे नहीं पता कि किस टूलसेट नाम का उपयोग करना है। वीकोएफटीसी फ़ाइल में एमएसवीसी और स्ट्लपोर्ट के लिए कई प्रविष्टियां हैं। मैं दो प्रविष्टियों से संबंधित नहीं था निकाला गया "wm5," लेकिन जब मैं निम्न आदेश के साथ संकलन

b2 --build-dir=C:\boost-build toolset=msvc --build-type=complete stage 

मैं की तरह त्रुटियों की एक गुच्छा मिलता है:

compile-c-c++ C:\boost-build\boost\bin.v2\libs\regex\build\msvc-9.0~wm5~stlport5.2\debug\threading-multi\has_icu_test.obj 
The system cannot find the path specified. 

दरअसल, उस फ़ाइल करता है अस्तित्व में नहीं है, लेकिन has_icu_test.obj.rsp मौजूद है। क्या मैं कुछ भूल रहा हूँ? क्या मैं सही रास्ते पर भी हूं?

अद्यतन:

जब से मैं नहीं मिल सकता है Boost.Build काम करने के लिए और Boost.Build मेलिंग सूची पर प्यार नहीं मिल रहा है, मैं CMake बूस्ट के लिए प्रणाली का निर्माण की कोशिश कर रहा करने के लिए पर स्थानांतरित कर दिया है: http://gitorious.org/boost/cmake। मैं CEgcc साथ संयोजन के रूप में इस का उपयोग कर रहा (मैं भी बहुत कुछ विंडोज की तुलना में लिनक्स से परिचित हूँ) और मैं निम्नलिखित त्रुटि में चल रहा हूँ:

boost/config/requires_threads.hpp:47:5: error: #error "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)" 

-mthreads सी का हिस्सा है और CXX flags-- समस्या यह है कि BOOST_PLATFORM_CONFIG को boost/config/select_platform_config.hpp द्वारा परिभाषित नहीं किया गया है। विंडोज सीई के लिए इसे क्या परिभाषित किया जाना चाहिए? मुझे लगा कि यह बूस्ट/कॉन्फ़िगर/प्लेटफार्म/win32.hpp होना चाहिए (जो तब BOOST_HAS_WINTHREADS को परिभाषित करेगा, जो उपर्युक्त त्रुटि को हल करेगा)। रिलीज नोट्स इस काम का दावा कैसे कर सकता है जब select_platform_config.hpp विंडोज सीई मामलों को संभालने में प्रतीत नहीं होता है? यदि BOOST_PLATFORM_CONFIG को वास्तव में boost/config/platform/win32.hpp होने की आवश्यकता है, तो मुझे या तो _WIN32, WIN32, या WIN32 परिभाषित करने की आवश्यकता है। मेरी पहली प्रतिक्रिया यह है कि इनमें से कोई भी सीई के लिए संकलन के लिए उपयोग नहीं किया जाना चाहिए। साथ ही, VeecoFTC फ़ाइल में इनमें से कोई भी शामिल नहीं है। यह कैसे काम करता है?

+0

क्या आप वास्तव में किसी भी बूस्ट पुस्तकालयों का उपयोग करते हैं जिन्हें संकलन की आवश्यकता है? बूस्ट में बहुत सारी उपयोगी पुस्तकालय हैं जिन्हें इमारत की आवश्यकता नहीं है। – Daemin

+0

ठीक है, आप वास्तव में किस प्रकार के बूस्ट का उपयोग करते हैं? मैं व्यक्तिगत रूप से बस STATIC_ASSERT और boost :: mpl जैसे मानक सुविधाओं के लिए बूस्ट हेडर फ़ाइलों का उपयोग कर रहा हूं, और ये चीजें WinCE/VC++ में ठीक काम करती हैं। बूस्ट पुस्तकालयों का एक विशाल संग्रह है; निश्चित रूप से आपको इसे सफलतापूर्वक संकलित करने की आवश्यकता नहीं है। – Qwertie

+0

"दृश्य सी ++, विंडोज मोबाइल 5, एसटीएलपोर्ट के साथ: 9.0," के बारे में, यह वीसी ++ 9 है, डब्लूएम 5 के लिए एसटीएलपोर्ट क्रॉस-कंपाइलिंग के साथ। हाँ, यह उस तरह मजाकिया लग रहा है। –

उत्तर

1

आपको वास्तव में बढ़ावा देने के लिए बूस्ट बिल्ड का उपयोग नहीं करना है। मैंने एक परियोजना के लिए एक स्कैन स्क्रिप्ट का उपयोग करके बढ़ावा का हिस्सा बनाया जहां मुझे बिल्ड विकल्पों पर अधिक नियंत्रण की आवश्यकता थी। यह काफी अच्छा काम किया।

import os 

env = Environment() 

boost_source = os.environ.get('BOOST_SOURCE', None) 
if not boost_source: 
    raise Exception, 'BOOST_SOURCE not set' 

env.Append(CPPPATH = [boost_source]) 

if env['PLATFORM'] == 'win32': 
    env.Append(CPPDEFINES = ['BOOST_ALL_NO_LIB']) 


VariantDir('build', boost_source + '/libs') 

import glob 
import re 

for lib in ['iostreams', 'filesystem', 'system', 'regex', 'thread', 
      'serialization']: 
    src = [] 
    path = boost_source + '/libs/%s/src' % lib 

    if lib == 'thread': 
     if env['PLATFORM'] == 'win32': 
      src.append(path + '/tss_null.cpp') 
      path += '/win32' 
      env.Append(CPPDEFINES = ['BOOST_HAS_WINTHREADS', 
            'BOOST_THREAD_BUILD_LIB']) 
     else: path += '/pthread' 

    src += glob.glob(path + '/*.cpp') 

    src = map(lambda x: re.sub(re.escape(boost_source + '/libs'), 'build', x), 
       src) 

    libname = 'boost_%s' % lib 
    if env['PLATFORM'] == 'win32': libname = 'lib' + libname 
    lib = env.Library('lib/' + libname, src) 

Clean(lib, 'build') 
Clean(lib, 'lib') 

यह SCons स्क्रिप्ट सिर्फ सूचीबद्ध बढ़ावा मॉड्यूल में स्रोत फ़ाइलों के लिए खोज करता है और डिफ़ॉल्ट संकलक के साथ संकलित: यह कुछ इस तरह चला गया। मैं BOOST_SOURCE पर्यावरण चर के माध्यम से बूस्ट स्रोत निर्देशिका के पथ में जाता हूं।

यह विंडोज सीई के लिए काम कर सकता है क्योंकि यह आपको निर्माण प्रक्रिया पर अधिक नियंत्रण देगा। आप मेक या एनमेक के साथ कुछ भी ऐसा कर सकते हैं।

कहानी का नैतिक यह है कि बीजेएम/बूस्टबिल्ड का उपयोग करके बाहर बढ़ने का निर्माण इतना मुश्किल नहीं है।

+0

धन्यवाद, मैं इसमें देख रहा हूं। मैं किसी भी समाधान को पोस्ट करना सुनिश्चित कर दूंगा! – Kyle

+0

दुर्भाग्यवश, मैं या तो बनाने के लिए अन्य विधियां प्राप्त करने में सक्षम नहीं हूं। मैंने बूस्ट सीएमके सामान के साथ और प्रगति की है, मेरे पास संकलन के मुद्दे हैं। शायद मैं सिर्फ विंडोज विकास के बारे में पर्याप्त नहीं जानता। मुझे लिनक्स याद आती है।यद्यपि कि आपकी इस सहायता के लिए धन्यवाद :) । – Kyle

0

यह त्रुटि है कि आप देखेंगे कि msvc टूल-सेट कॉन्फ़िगरेशन में टूल-सेट स्थापित करने के लिए गलत पथ है या नहीं। मैंने 64-बिट विंडोज मशीनों पर ऐसी त्रुटियां देखी हैं, जहां उपकरण मानते हैं कि "सी: \ प्रोग्राम फ़ाइलें" में कंपाइलर स्थापित है लेकिन यह वास्तव में "सी: \ प्रोग्राम फ़ाइलें (x86)"

टूल को चेक करें कॉन्फ़िगरेशन सेट करें और सुनिश्चित करें कि यह उस स्थान से मेल खाता है जहां एसडीके स्थापित है।

0

मैंने सफलता बूस्ट के साथ संकलित किया है। थ्रेड, बूस्ट.रेगेक्स, बूस्ट। सिस्टम, बूस्ट। क्रोनो और बूस्ट। X86 प्लेटफार्म पर विंडोज सीई 6.0 के लिए एटॉमिक।

प्रमुख काम WinCE को अधिक एएनएसआई सी संकलित करना था। मैंने थोड़ा एसटीएलपोर्ट बदल दिया है और गायब सी फंक्शन के साथ एकीकृत किया है। तब मैंने एसटीएलपोर्ट के साथ बढ़ावा दिया।

http://stackoverflow.com/questions/15906901/build-boost-c-wince

: http:

नीचे दिए गए लिंक मैं पोस्ट पर देखो // stackoverflow.com/questions/16016637/boost-c-and-windows-ce-6-0

http://stackoverflow.com/questions/15959877/windows-ce-6-0-and-runtime -लिंक करने वाली घ ebug-dll-MDD

http://stackoverflow.com/questions/11079337/wince-5-0-using-stlport-void-operator-newsize-t-void-already-has-a-body/15814730 # 15814730

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

  • कोई संबंधित समस्या नहीं^_^