2010-10-19 10 views
17

मैंने बूस्ट लाइब्रेरी के नवीनतम संस्करण को मेरी लिनक्स मशीन पर सफलतापूर्वक संकलित और स्थापित किया। अब, मैं जीसीसी के साथ लिंकिंग पेरेमेटर्स प्रदान करने की प्रक्रिया को आसान बनाने के लिए पीकेजी-कॉन्फ़िगरेशन का उपयोग करने में सक्षम होना चाहता हूं।पीकेजी-कॉन्फ़िगरेशन के साथ सी ++ बूस्ट लाइब्रेरी का उपयोग कैसे करें?

चूंकि मैं अपनी खुद की .pc फ़ाइल को हाथ-कोडिंग के लिए बहुत आलसी हूं, क्या कोई स्क्रिप्ट/टूल है जो स्वचालित रूप से आवश्यक .pc फ़ाइल जेनरेट करेगा या किसी अन्य तरीके से बूस्ट फ्लैग के साथ pkg-config अपडेट करेगा?

(कोई पहले से ही है कि .pc फ़ाइल है, तो एक हिस्से के रूप में अच्छी तरह स्वागत किया जाएगा।)

उत्तर

8

क्या आप देख रहे हैं, के रूप में में संकेत थोड़ा जटिल है, और एक लंबे समय से अनुरोध किया की सुविधा हो रहा है बूस्ट के ट्रैक पर यह 3 साल पुराना पोस्ट https://svn.boost.org/trac/boost/ticket/1094। इसके माध्यम से पढ़ना दर्शाता है कि सुविधा को बार-बार स्थगित कर दिया गया था और कभी भी लागू नहीं किया गया था (1.4.3 के रूप में)। पीकेजी-कॉन्फ़िगरेशन द्वारा उपयोग की जाने वाली .pc फ़ाइल जेनरेट करने में असमर्थता का कारण उनके लाइब्रेरी संस्करणों/निर्माण प्रकारों को नाम देने में बूस्ट की असंगतता के साथ होता है।

एफडब्ल्यूआईडब्ल्यू, आपकी बिल्डिंग प्रक्रिया को "स्वचालित" करने का विकल्प ऑटोोटूल (ऑटोकॉन्फ़/ऑटोमैट) का उपयोग करना है। एक लिंक है जो आपके लिए उपयोग किया जा सकता है (जिसे मैं पोस्ट नहीं कर सकता क्योंकि सो सोचता है कि मैं एक नवागत की बजाय स्पैमर हूं!), बस "tsuna boost m4 github" google पर जाएं और इसे आपको वहां ले जाना चाहिए :)

5

को बढ़ावा देने के साथ एक ही समस्या का सामना करना पड़ रहा था। एक .pc फ़ाइल उत्पन्न करने के लिए सरल पायथन स्क्रिप्ट लिखें। मुझे सभी लिंकर कमांड लिखने का दर्द बचाया। मैंने इसे https://github.com/nmante/pkg-config-generator पर पोस्ट किया है।

अनिवार्य रूप से, आप स्क्रिप्ट को एक निर्देशिका देते हैं जहां लाइब्रेरी फ़ाइलें हैं (.so, .a, .dylib फ़ाइलें) और यह लिंकर कमांड (उदा। -lboost_graph) उत्पन्न करेगी। अपनी जरूरतों के लिए ट्विक और कांटा करने के लिए स्वतंत्र महसूस करें।

यहां एक नमूना boost.pc फ़ाइल है जो मैंने अपनी मशीन (मैक ओएस एक्स) के लिए जेनरेट की है। आप इसे मैन्युअल रूप से ट्विक कर सकते हैं, या आप अपनी मशीन पर इसे उत्पन्न करने के लिए अपने github program का उपयोग कर सकते हैं।

# Package Information for pkg-config 

prefix=/usr/local/Cellar/boost/1.60.0_2 
exec_prefix=${prefix} 
libdir=${exec_prefix}/lib 
includedir_old=${prefix}/include/boost 
includedir_new=${prefix}/include 

Name: Boost 
Description: Boost is awesome 
Version: 1.60.0 
Libs: -L${exec_prefix}/lib -lboost_prg_exec_monitor-mt 
-lboost_math_c99f-mt -lboost_unit_test_framework-mt 
-lboost_container-mt -lboost_log_setup -lboost_math_tr1l 
-lboost_graph-mt -lboost_wserialization-mt -lboost_log-mt 
-lboost_math_c99f -lboost_type_erasure -lboost_signals-mt 
-lboost_test_exec_monitor -lboost_filesystem -lboost_thread-mt 
-lboost_math_tr1f-mt -lboost_date_time -lboost_timer 
-lboost_math_tr1f -lboost_test_exec_monitor-mt -lboost_container 
-lboost_math_tr1 -lboost_type_erasure-mt 
-lboost_program_options-mt -lboost_graph -lboost_log_setup-mt 
-lboost_random -lboost_system -lboost_system-mt -lboost_locale-mt 
-lboost_wserialization -lboost_regex -lboost_exception 
-lboost_timer-mt -lboost_signals -lboost_filesystem-mt 
-lboost_math_c99-mt -lboost_math_tr1-mt -lboost_serialization-mt 
-lboost_serialization -lboost_prg_exec_monitor -lboost_exception-mt 
-lboost_coroutine -lboost_math_c99 -lboost_iostreams-mt 
-lboost_random-mt -lboost_program_options -lboost_atomic-mt 
-lboost_date_time-mt -lboost_math_c99l -lboost_math_tr1l-mt 
-lboost_context-mt -lboost_regex-mt -lboost_coroutine-mt 
-lboost_log -lboost_chrono-mt -lboost_wave-mt 
-lboost_iostreams -lboost_chrono -lboost_unit_test_framework 
-lboost_math_c99l-mt 
Cflags: -I${includedir_old} -I${includedir_new} 
संबंधित मुद्दे