2013-02-13 7 views
6

के लिए नेटबीन्स पर्यावरण चर मेरे पास एक साधारण मेकफ़ाइल है जो C++ कंपाइलर को $(CXX) के रूप में कॉल करता है, जो मेरी ~/.profile स्क्रिप्ट में सेट है। नेटबीन्स में एक परिष्कृत टूलचेन प्रबंधक प्रतीत होता है, फिर भी यह $CXX को c++ के रूप में हल करने के लिए प्रतीत होता है।सी ++ मेकफ़ाइल

मैं कैसे $CXX ठीक से सेट कर सकते हैं, या कोई अन्य चर Netbeans कि मेरी makefile पता लगा सकते हैं द्वारा निर्धारित है? (छी)

संपादित करें: हालांकि वहां इनपुट की एक पंक्ति के लिए केवल कमरे प्रतीत हो रहा है नाविक में makefile राइट-क्लिक करके, मुझे एक वातावरण निर्दिष्ट करने के लिए अनुमति देता है। CXX=/usr/local/bin/g++ निर्दिष्ट करना समस्या को हल करता है, लेकिन यह इष्टतम से बहुत दूर है।

+0

आप प्रति फ़ाइल संकलन विकल्पों को निर्दिष्ट कर सकते हैं, इसलिए यदि आप फ़ाइल पर राइट क्लिक करते हैं तो आप इसे 'सी' फ़ाइल या 'सी ++' फ़ाइल के रूप में निर्दिष्ट कर सकते हैं ... एक कंपाइलर चुनने के लिए आपको 'टूलकिट' । – Mikhail

+0

@ मिखाइल यह एक कस्टम मेकफ़ाइल है, इसलिए नेटबीन प्रति फ़ाइल कुछ भी नहीं कर सकता है। – Potatoswatter

+0

शायद आप अपना मेकफ़ाइल बदल सकते हैं? इसके अलावा आप मेकफ़ाइल पर एक कस्टम आमंत्रण करते हैं, लेकिन मुझे लगता है कि आपको सही 'टूलसेट' चुनना होगा। – Mikhail

उत्तर

3

मैं केवल तब वर्णन करूंगा जब मैं नेटबीन में सी ++ के साथ काम करता हूं।

MAIN = <my main target> 
CFLAGS = -g -std=c++0x 

include ${MAKELIBHOME}/MINGW32.inc 
include ${MAKELIBHOME}/WINDOWS.inc 

build: ${MAIN} 

clean:; rm -fr <files to remove> 

वातावरण चर MAKELIBHOME NetBeans के बाहर सेट है: सबसे पहले, प्रत्येक परियोजना के लिए मैं इस तरह एक साधारण makefile पैदा करते हैं। निर्देशिका $ {MAKELIBHOME} की मेकअप के लिए फ़ाइलों शामिल एक नंबर होता है, उदाहरण के लिए फ़ाइल MINGW32.inc इस तरह दिखता है:

CC = g++ 

CFLAGS += -W -DLITTLE_ENDIAN=1 
LDLIBS += -lws2_32 

.SUFFIXES: .o .c .cpp 

.c:  ;${CC} ${CFLAGS} ${LDFLAGS} $< -o latest ${LDLIBS} 
.cpp: ;${CC} ${CFLAGS} ${LDFLAGS} $< -o latest ${LDLIBS} 

.c.o: ;${CC} ${CFLAGS} -c $< 
.cpp.o: ;${CC} ${CFLAGS} -c $< 

ये इंक-फ़ाइलें सभी NetBeans परियोजनाओं के लिए ही हैं। यहां कोई पूर्ण पथ नहीं है, इसलिए मेक एक जीसीसी टूलसेट का पता लगाने के लिए पैथ चर का उपयोग करेगा, लेकिन निश्चित रूप से आप अपने इच्छित टूलसेट को चुनने के लिए पूर्ण पथ का उपयोग कर सकते हैं (या एक अलग inc-file शामिल करें - मैं इस तरह से पसंद करूंगा)।

यह सब मेरी विंडोज मशीन पर काम करता है, लेकिन लिनक्स कॉन्फ़िगरेशन बहुत समान दिखता है - मुझे बस अपने सभी मुख्य मेकफ़ाइलों में इंक-फाइलों का एक और सेट शामिल करने की आवश्यकता है। साथ ही, यह सेटअप मुझे कमांड लाइन से मेक कॉल करने की अनुमति देता है।

मुझे आशा है कि यह मदद करता है, ~ AY

+0

हम्म, मैंने इसे पोस्ट करते समय इसे याद किया । मैं अब नेटबीन का उपयोग नहीं करता हूं, लेकिन मेरा सवाल है "पर्यावरण चर 'MAKELIBHOME' नेटबीन के बाहर सेट है।" * नेटबीन को आप बाहरी वातावरण चर कैसे बनाते हैं? हालांकि, चूंकि मैं यूनिक्स/ओएस एक्स पर हूं, इसलिए इसका अनुवाद नहीं हो सकता है। – Potatoswatter

+0

@ पोटाटोस्वाटर - 'मेक' विंडोज और यूनिक्स दोनों में पर्यावरण चर का संदर्भ ले सकता है, और यह नेटबीन के बाहर होता है। बीटीडब्लू, मैं हमेशा नेटबीन प्रोजेक्ट प्रकार "सी/सी ++ प्रोजेक्ट के साथ मौजूदा स्रोतों" का उपयोग करता हूं, इसलिए मेरा 'मेकफ़ाइल' पूरी तरह से मेरे नियंत्रण – HEKTO

+0

के तहत है, जैसा कि सवाल बताता है, मेरे '.profile' ने '$ CXX' सेट किया था लेकिन परिवर्तनीय मेकफ़ाइल के लिए उपलब्ध नहीं था। कार्यक्रम जो 'मेक' का आह्वान करता है वह पर्यावरण बनाने के लिए ज़िम्मेदार है, हालांकि यह सच है कि चर डिफ़ॉल्ट रूप से प्रचारित होते हैं। – Potatoswatter

2

यह एक पुरानी पोस्ट है। हालांकि मुझे हाल ही में एक ही समस्या मिली और मुझे @ हेक्को के जवाब के आधार पर एक विकल्प मिला।

मैं बड़े स्पैर मैट्रिक्स सिस्टम को हल करने के लिए पीईटीएससी, लाइब्रेरी का उपयोग करता हूं। उनके निर्माण प्रणाली के लिए आपको अपने मेकफ़ाइल में "शामिल" का उपयोग करने की आवश्यकता होती है जो दो पर्यावरण चर पर निर्भर करता है: PETSC_DIR और PETSC_ARCH जो आपके पर्यावरण में सेट होनी चाहिए .... या आप उन्हें अपने कमांड कमांड के विकल्प के रूप में पास कर सकते हैं !! यह जो मैंने किया है।

मैं NetBeans द्वारा उत्पन्न makefile लिया और अंत में मैं जोड़ा मेरी शामिल हैं:

include ${PETSC_DIR}/conf/variables 

सूचना यह कैसे PETSC_DIR की परिभाषा पर निर्भर करता है। इसके अलावा इसमें इस जगह और बड़े पैमाने पर PETSC_ARCH का व्यापक रूप से उपयोग शामिल है।

तो, नेटबीन में अब मैं इसे बदलने के लिए इन चरों को पास करने के लिए कॉन्फ़िगर करता हूं: टूल्स-> विकल्प: "प्रोजेक्ट विकल्प" टैब में मैं "विकल्प बनाएं" के लिए टेक्स्ट बॉक्स भरता हूं: PETSC_DIR =/path// petc PETSC_ARCH = कुछ-आर्क

इसके अलावा, अब आप इन पर्यावरण चर के उपयोग (और दूसरों को आपके प्रोजेक्ट विकल्पों में $ {PETSC_DIR}/conf/variables में परिभाषित करना शुरू कर सकते हैं।उदाहरण के लिए, मेरी फ़ाइलों में शामिल हैं के लिए मैं (सही परियोजना पर क्लिक करें, फिर "गुण") है: के तहत 'सी संकलक "," निर्देशिकाएँ शामिल करें "मैं डाल: $ {PETSC_DIR}/शामिल

और के तहत" लिंकर " , "पुस्तकालय" मैंने रखा: $ {PETSC_LIB} (उपर्युक्त फ़ाइल में परिभाषित)।

अब मैं नेटबीन के भीतर से अपनी परियोजना को बना और चला सकता हूं। यदि मेरा पीईटीएससी संस्करण बदलता है तो मुझे केवल बनाने के लिए पारित चर की परिभाषा को बदलने की आवश्यकता है और बाकी सब कुछ हल हो जाता है।

मुझे उम्मीद है कि यह किसी की मदद कर सकता है। यह निश्चित रूप से मेरे लिए काम किया। और अच्छा हिस्सा यह है कि मैं अन्य लोगों को अपना कोड दे सकता हूं और वे सामान्य रूप से "मेक" के बिना कमांड लाइन से संकलित कर सकते हैं (नेटबीन के बिना) और उपरोक्त पर्यावरण चर को परिभाषित कर सकते हैं। संकलन में अब कोई कठोर कोडित पथ नहीं है।

1

मुझे लिनक्स पर एक बहुत ही समान समस्या थी, जहां नेटबीन्स ने बैश से पर्यावरण चर को नहीं पकड़ा था।

समाधान: बैश से नेटबीन शुरू करें।

मुझे यकीन नहीं है कि मैक पर समतुल्य क्या है, लेकिन विचार सरल है: नेटबीन को ऐसे टर्मिनल से शुरू करें जिसमें सही वातावरण चर पहले से सेट हो।