c++ सैमटाइम पर बढ़ावा देने के लिए 32 और 64 बिट पुस्तकालय बनाएं?




boost bjam (3)

विकल्प "--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 टूलसेट का उपयोग करते हुए। और "काम" से मेरा मतलब है कि मैंने इसे ओएसएक्स पर darwin टूलसेट के साथ अपनी बूस्ट लाइब्रेरी के साथ आजमाया। इसलिए मुझे संदेह है कि आपके पास आपका वाक्यविन्यास गलत है, यानी "--name = values" का उपयोग न करें क्योंकि वे विकल्प नहीं हैं, बल्कि इसके बजाय "name = values" का उपयोग आवश्यकता विनिर्देश हैं।


मैं निम्नलिखित करने के लिए समाप्त हो गया:

  • 32 lib / dll को / lib32 नामक एक अलग फ़ोल्डर में स्टोर करें
  • / Lib64 नामक एक समुद्री जल फ़ोल्डर में 64 lib / dll बनाता है

दोनों एक खोज पथ में अधिमानतः हैं जो बढ़ावा पहले से ही जांच रहा है, जैसे चरण या स्थापना फ़ोल्डर।

फिर मैंने हेडर के नीचे खोज पथ इकट्ठा किए जाने के ठीक बाद इस ब्लॉक को जोड़ा (संपादन करने के लिए FindBoost.cmake फ़ाइल आपके सीएमके स्थापना फ़ोल्डर में शेयर / cmake-3.1 / मॉड्यूल / फ़ोल्डर के अंतर्गत है)

बूस्ट पुस्तकालयों को ढूंढना शुरू करें

...

अगर (Boost_LIBRARY_DIR)

...

अगर अंत()

#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()  

यह पुस्तकालयों के लिए बूस्ट सर्च पथ में सभी मौजूदा lib निर्देशिकाओं को दोबारा जोड़ देगा, जो 64 या 32 बिट एक्सटेंशन टैग से भरा हुआ है। यह जोड़ने के लिए सही लक्ष्य libs का चयन करता है, और आप बूस्ट निर्भरता पथ को रीसेट किए बिना 32 या 64 लक्ष्य निर्माण के लिए किसी भी अन्य निर्भर cmake लाइब्रेरी (जैसे CGAL) को सुरक्षित रूप से पुन: उत्पन्न कर सकते हैं।





boost-bjam