2012-09-14 7 views
5

मैं एक सी ++ फ़ाइल संकलित करने की कोशिश कर रहा हूं जो मैक ओएसएक्स पर बूस्ट लाइब्रेरी का उपयोग करता है। उदाहरण के लिए, तो सब कुछ ठीक है अगर मैंएक सी ++ फ़ाइल संकलित करने के लिए आर सीएमडी SHLIB का उपयोग करते समय हेडर खोज पथ निर्दिष्ट कैसे करें?

g++ -I/usr/local/boost simple.cpp 

साथ कमांड खोल में फ़ाइल संकलन निम्नलिखित "simple.cpp"

#include <boost/random.hpp> 
using namesapce boost::math; 

int main(){ 
    boost::mt19937 rng; 
    rng.seed(static_cast<boost::uint32_t> (std::time(0))); 

    return 0; 
} 

देखते हैं। लेकिन मैं एक साझा लाइब्रेरी बनाना चाहता हूं ताकि मैं इसे अपने आर प्रोजेक्ट को तेज करने के लिए उपयोग कर सकूं। अगर मैं

R CMD SHLIB test.cpp 

का उपयोग करता है तो यह रिपोर्ट करता है कि हेडर फ़ाइल नहीं मिल सकती है। क्या आर सीएमडी के लिए खोज पथ निर्दिष्ट करने का कोई तरीका है? कुछ

R CMD SHLIB -I/usr/local/boost test.cpp 
+0

'SHLIB' में एक उदाहरण है। –

+1

(1) शायद '# शामिल' पंक्ति में '<' और 'boost/random.hpp' के बीच कोई स्थान नहीं होना चाहिए। (2) यदि आपको G ++ कमांड लाइन पर '-I/usr/local/boost' निर्दिष्ट करने की आवश्यकता है (इसलिए हेडर को '/ usr/local/boost/boost/random.hpp' के रूप में स्थापित किया गया था), तो आप चाहते थे शायद आर कमांड के लिए ऐसा करने की जरूरत है। वैकल्पिक रूप से, G ++ स्वचालित रूप से '/ usr/local/include' में देख सकता है (और तब फ़ाइल '/ usr/local/include/boost/random.hpp') पाता है, लेकिन फिर, आर कमांड ऐसा नहीं करता है (इसलिए आपको यह पता लगाना होगा कि इसे कैसे करना है)। –

+0

'इसे कैसे करें' मानक मानक सेट करना है जो आर मेरे नीचे दिए गए उत्तर के रूप में सम्मान करता है। –

उत्तर

8

की तरह आप PKG_CXXFLAGS सेट करना चाहते हैं - विवरण के लिए the fine manual's Section 1.2. "Using Makevars" रूप में अच्छी तरह के रूप में Section 5.5 "Creating shared objects" देखते हैं।

+0

डिर्क, आपके सुझाव के लिए धन्यवाद! यह एक हवा की तरह काम करता है। –

+0

इसे सुनकर खुशी हुई। यह तब के लिए प्रथागत है) एक उत्तर स्वीकार करें ("टिकमार्क" पर क्लिक करें) और इसे ऊपर उठाने के लिए (ऊपर-तीर पर क्लिक करें)। –

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

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