विकल्प "--address-model = 32,64" 32 और 64 पुस्तकालयों दोनों का निर्माण करेगा या क्या आपको दो अलग-अलग बिल्ड करना होगा?सैमटाइम पर बढ़ावा देने के लिए 32 और 64 बिट पुस्तकालय बनाएं?
उत्तर
कर:
b2 address-model=32,64
या ..
b2 address-model=32,64,32_64
कार्य और उत्पादन टूलसेट और मंच का समर्थन, पहले मामले में दोनों 32 और 64 बिट लक्ष्यों पर निर्भर करता है। और 32, 64, और 32 + 64 सार्वभौमिक लक्ष्य (darwin
टूलसेट का उपयोग करके ओएसएक्स पर सबसे अधिक संभावना है। और "काम" से मेरा मतलब है कि मैंने इसे darwin
टूलसेट के साथ ओएसएक्स पर अपनी बूस्ट लाइब्रेरी के साथ आजमाया। इसलिए मुझे संदेह है कि आपके पास अपने वाक्य रचना गलत, यानी "--name = मूल्यों" का उपयोग न करें, क्योंकि वे विकल्प नहीं हैं, लेकिन इसके बजाय का उपयोग करें "नाम = मूल्यों" द आवश्यकता विनिर्देशों हैं
वाक्यविन्यास स्पष्टीकरण के लिए धन्यवाद! शायद मैं picky जा रहा हूँ, लेकिन वाक्यविन्यास गलत है जब बी 2 एक त्रुटि (न्यूनतम पर चेतावनी) दे रहा है? मुझे लगता है कि कहानी का नैतिक बी 2 के साथ सावधान रहना है !! – PopcornKing
बी 2 कार्यान्वयन के पीओवी से यह वास्तव में आसान नहीं है, कि वाक्यविन्यास गलत है। यह एक सही ढंग से सिंटैक्स विकल्प (कुछ भी जो "-" से शुरू होता है, जिसे यह पहचान नहीं आता है, जो जामफाइल को पास किया जाता है। जो सभी मॉड्यूलर तरीके से विकल्प को देखते हैं, और निर्णय लेते हैं कि वे संभाल नहीं पाते हैं। इसलिए वहां कोई जगह नहीं है जहां यह तय कर सके कि विकल्प वैध नहीं है। मैं इसे अनदेखा कर रहा हूं। बी 2 सीएलआई का प्रभाव बंद सिंटैक्स सेट नहीं है। – GrafikRobot
मुझे लगता है कि आपको इसके साथ कोई समस्या होगी पुस्तकालयों को प्राप्त करने के लिए आता है क्योंकि दुर्भाग्यवश 32 बिट और 64 बिट पुस्तकालयों के समान नाम हैं। आपको दो बार बी 2 चलाने की आवश्यकता है। उदाहरण के लिए, "--stagedir = stage32 पता-मॉडल = 32" और एक बार " --stagedir = stage64 पता-मॉडल = 64 " – mheyman
प्रलेखन राज्यों (जोर मेरा):
"स्पष्ट रूप से अनुरोध करता या तो 32-बिट या 64-बिट कोड पीढ़ी।"
ध्यान दें कि यह "एक या अधिक" या "कम से कम एक" नहीं कहता है, या तो यह कहता है ... या, जो मेरे पढ़ने में एक्सओआर का तात्पर्य है और आपका अनुभव उससे मेल खाता है।
अनुमत मानों की सूची में अल्पविराम केवल दो वस्तुओं को अनुमत मूल्यों के सेट में अलग करना है।
प्रलेखन में यह भी कहा गया है: "अल्पविराम का विशेष अर्थ केवल तभी होता है जब सुविधा के मानों का एक निश्चित सेट हो, इसलिए bjam में शामिल हैं = स्थिर, साझा विशेष रूप से इलाज नहीं किया जाता है। " पता-मॉडल के लिए 32 और 64 मुझे ठीक लगते हैं। प्रतिक्रिया के लिए धन्यवाद। – PopcornKing
@PopcornKing - मुझे लगता है कि विशिष्ट ध्वज पर "या तो .. या" टिप्पणी किसी भी सामान्य टिप्पणी को छोड़ देती है जो अन्यथा लागू होती है – Flexo
मैं निम्न कार्य समाप्त हो गया:।
- स्टोर 32 lib/dll 64 lib/dll/lib64 नामक एक seaprate फ़ोल्डर में बनाता है कहा जाता है/lib32
- स्टोर एक अलग फ़ोल्डर में बनाता है
दोनों एक खोज पथ कि उससे पहले से ही इस तरह के चरण या स्थापना फ़ोल्डर के रूप में, जाँच कर रहा है में बेहतर कर रहे हैं।
तब मैं इस ब्लॉक जोड़ा सही होने के बाद खोज पथ हैडर (संपादित करने के लिए FindBoost.cmake फ़ाइल अपने CMake स्थापना फ़ोल्डर में शेयर/cmake-3.1/मॉड्यूल/ फ़ोल्डर के अंतर्गत है)
तहत इकट्ठे होते हैंबढ़ावा पुस्तकालयों
खोजने शुरू ...
अगर (Boost_LIBRAR Y_DIR)
...
endif()
#generate 32 and 64 bit paths
if(WIN32)
if(CMAKE_CL_64)
#message("Finding BOOST on windows platform (64 bit)")
SET(BOOST_libdir_suffix_gen "64")
else()
#message("Finding BOOST on windows platform (32 bit)")
SET(BOOST_libdir_suffix_gen "32")
endif()
list(APPEND _boost_LIBRARY_SEARCH_DIRS_PLATFORMS "")
foreach(SEARCH_DIR_NOPLATFORM ${_boost_LIBRARY_SEARCH_DIRS})
list(APPEND _boost_LIBRARY_SEARCH_DIRS_PLATFORMS ${SEARCH_DIR_NOPLATFORM}${BOOST_libdir_suffix_gen})
endforeach()
foreach(SEARCH_DIR_PLATFORM ${_boost_LIBRARY_SEARCH_DIRS_PLATFORMS})
list (APPEND _boost_LIBRARY_SEARCH_DIRS ${SEARCH_DIR_PLATFORM})
endforeach()
else()
# no generation required (?)
endif()
यह पुस्तकालयों के लिए बढ़ावा खोज पथ, एक 64 या 32 बिट विस्तार टैग के साथ प्रत्यय करने के लिए सभी मौजूदा lib निर्देशिका फिर से जोड़ देंगे। यह जोड़ने के लिए सही लक्ष्य libs का चयन करता है, और आप बूस्ट निर्भरता पथ को रीसेट किए बिना 32 या 64 लक्ष्य निर्माण के लिए किसी भी अन्य निर्भर cmake लाइब्रेरी (जैसे CGAL) को सुरक्षित रूप से पुन: उत्पन्न कर सकते हैं।
** आप में से उन लोगों के लिए i386 मैक ओएस के लिए संकलन ** और यहां ठोकर खाई गई, और यह काम नहीं किया, तो आप आत्महत्या करने (मेरे जैसे) के कगार पर थे, इस ध्वज को भी जोड़ें: 'वास्तुकला = x86' – Mazyod
मुझे एक समान प्रश्न है। मैं 32 और 64 बिट को बढ़ावा दे सकता हूं (नीचे दिए गए उत्तर में 32_64 सुझाव संस्करण 1.57.0 के साथ विंडोज़ पर काम नहीं करता है) और उन्हें विभिन्न lib निर्देशिकाओं में संग्रहीत करता है, लेकिन उन libs का संदर्भ देते समय, आयोजन करने के लिए सबसे अच्छा या सुझाया गया दृष्टिकोण क्या है उन्हें? मैं पर्यावरण चर के बीच स्वैप किए बिना 32 बिट और 64 परियोजनाओं को बनाने में सक्षम होना चाहता हूं (उदाहरण के लिए cmake का उपयोग करते समय) – StarShine