2008-10-06 15 views
8

बूस्ट कई अंतर-निर्भरताओं के साथ एक बहुत बड़ी लाइब्रेरी है - जो संकलन करने में काफी समय लगता है (जो मेरे लिए CruiseControl प्रतिक्रिया समय धीमा कर देता है)।बूस्ट में आप बड़ी निर्भरताओं से कैसे निपटते हैं?

मेरे द्वारा उपयोग किए जाने वाले बूस्ट का एकमात्र भाग बूस्ट :: रेगेक्स और बूस्ट :: प्रारूप है।

क्या संकलन को तेजी से बनाने के लिए एक विशेष बूस्ट उप-लाइब्रेरी के लिए जरूरी बढ़ावा देने के केवल हिस्सों को निकालने का कोई आसान तरीका है?

संपादित करें: क्यों हम कर रहे हैं फिर से निर्माण को बढ़ावा देने के बारे में सवाल का जवाब करने के लिए ...

  1. बढ़ावा हेडर फाइल पार्स अभी भी एक लंबा समय लगता है। मुझे संदेह है कि अगर हम केवल वही चीज़ निकाल सकते हैं जो हमें चाहिए, तो पार्सिंग भी तेज हो जाएगी।
  2. हमारा क्रूज़ कंट्रोल सेटअप स्क्रैच से सबकुछ बनाता है। अगर हम उस बूस्ट के संस्करण को अपडेट करते हैं जो हम उपयोग कर रहे हैं तो यह भी आसान बनाता है। लेकिन मैं यह देखने के लिए जांच करूँगा कि क्या हम अपनी बिल्ड प्रक्रिया को बदल सकते हैं यह देखने के लिए कि क्या हमारी बिल्ड मशीन बदलावों के दौरान बढ़ावा दे सकती है और एसवीएन में उन बदलावों को कर सकती है। जब तक आप पैचिंग कर रहे हैं को बढ़ावा देने के लिए खुद को पुस्तकालय (मेरी कंपनी एक नीति है कि सब कुछ है कि बाहर दरवाजे चला जाता है "का निर्माण मशीन" पर बनाया जाना चाहिए है।)

उत्तर

8

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

2

, वहाँ यह हर बार जब आप कर पुन: संयोजित करने के लिए कोई कारण नहीं है एक निर्माण

1

प्रीकंपिल्ड हेडर दिन का शब्द हैं! बूस्ट हेडर को शामिल करें जो आपको अपने प्रीकंपील्ड हेडर में चाहिए - टाडा!

+0

इस के साथ ही समस्या यह है कि यह सबसे अच्छा काम करता है अगर एक ही शामिल करने की सर्वोत्तम प्रथाओं का उल्लंघन करता है कुछ इस तरह (आप, CMake में यह लोड करने के लिए सक्षम होना चाहिए अगर आप स्रोत तदनुसार समायोजित करें।) लग रहा है आवश्यक हेडर लेकिन मेरे लिए, तेजी से निर्माण सर्वोत्तम प्रथाओं की तुलना में अधिक महत्वपूर्ण होने के समाप्त हो गया ... –

1

हम बूस्ट का उपयोग कर रहे हैं, लेकिन हम केवल उन प्रकारों के लिए ऑब्जेक्ट फाइलें शामिल करते हैं जिन्हें हम वास्तव में उपयोग करते हैं। यानी, हम घर की उगाई गई उपयोगिताओं के समूह के साथ अपनी खुद की स्थिर पुस्तकालय का निर्माण करते हैं और बूस्ट के उन हिस्सों को शामिल करते हैं जिन्हें हम उपयोगी पाते हैं। हमारे CMakeLists.txt

project(MyBoost) 

set(SOURCES 
    boost/regex/src/c_regex_traits.cpp 
    boost/regex/src/cpp_regex_traits.cpp 
    boost/regex/src/cregex.cpp 
    boost/regex/src/fileiter.cpp 
    boost/regex/src/icu.cpp 
    boost/regex/src/instances.cpp 
    boost/regex/src/posix_api.cpp 
    boost/regex/src/regex.cpp 
    boost/regex/src/regex_debug.cpp 
    boost/regex/src/regex_raw_buffer.cpp 
    boost/regex/src/regex_traits_defaults.cpp 
    boost/regex/src/static_mutex.cpp 
    boost/regex/src/usinstances.cpp 
    boost/regex/src/w32_regex_traits.cpp 
    boost/regex/src/wc_regex_traits.cpp 
    boost/regex/src/wide_posix_api.cpp 
    boost/regex/src/winstances.cpp 
) 

add_library(MyBoost STATIC ${SOURCES}) 
संबंधित मुद्दे