2016-12-12 5 views
5

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

मुझे पता है कि Homebrew सॉफ्टवेयर side-by-side और उन दोनों के बीच switch एक से अधिक संस्करण स्थापित करने का विकल्प है, लेकिन यह कुछ इसी तरह एक ही सॉफ्टवेयर संस्करण का उपयोग करने के लिए संभव है, लेकिन (HOMEBREW_CC और HOMEBREW_CXX की स्थापना करके) विभिन्न compilers के साथ संकलित?

कुछ की तरह (इच्छाधारी सोच, किसी भी तरह दोनों बजना और जीसीसी साथ NetCDF स्थापित करने के बाद):

brew switch netcdf 4.3.3-gcc 
brew switch netcdf 4.3.3-clang 

उत्तर

2

मुझे लगता है कि यह तभी संभव है जब आप स्पष्ट रूप उदाहरण आप इस्तेमाल में की तरह अलग अलग संस्करण संख्या है " 4.3.3-जीसीसी "और" 4.3.3-क्लैंग "।

यदि संस्करण संख्या समान है तो बिल्ड में कोई अंतर नहीं है और ब्रू उन्हें अलग नहीं कर सकता है।

इसके अलावा मैं यह नहीं करूँगा।

  1. उसी लाइब्रेरी को संकलित करके कई अलग-अलग तरीकों से आप अब निर्भरता दुःस्वप्न में जा रहे हैं।
  2. निर्भरता संघर्ष। क्योंकि अगर आप "netcdf" को स्वैप करते हैं, तो आप कैसे जानते हैं कि आपने इसकी सभी निर्भरताओं को भी बदल दिया है? यदि वे एक ही कंपाइलर के साथ संकलित नहीं होते हैं तो बुरी चीजें हो सकती हैं, उदाहरण के लिए संघर्ष कैसे किए जाते हैं या ऐप और इसकी निर्भरताओं दोनों के लिए एक कंपाइलर में सक्षम विकल्पों के कारण संघर्ष किसी अन्य में सक्षम नहीं होने के कारण उत्पन्न हो सकते हैं निर्माण।

मैं ऐसा करने की अनुशंसा नहीं करता, यह बहुत परेशानी है।

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

+0

* "मैं ऐसा करने की अनुशंसा नहीं करता, यह एक परेशानी का बहुत अधिक है" *; मैं सामान्य रूप से सहमत हूं, लेकिन इस मामले में निर्भरता "दुःस्वप्न" बहुत कम है। * "... तो मैं उन्हें अलग फ़ोल्डर पेड़ों के बाहर बनाऊंगा ..." *; इस तरह मैं वर्तमान में इसे कर रहा हूं, लेकिन मैन्युअल रूप से संकुल का निर्माण कर रहा हूं। क्या इसे होमब्रू के साथ संभाला जा सकता है? अब मैं होमब्री फॉर्मूला द्वारा प्रदान किए गए बिल्ड विकल्प/सेटिंग्स को कॉपी-पेस्ट करता हूं। – Bart

+0

जैसा कि मैंने उल्लेख किया है, केवल विभिन्न संस्करण संख्याओं का उपयोग करके। अब जब भी आप संकलित किए गए कंपाइलर वैरिएबल का उपयोग कर संकलक को स्विच करना चाहते हैं तो आप पैकेज को पुनर्निर्माण कर सकते हैं। लेकिन, मुझे एक एहसास है कि आप ऐसा करने की कोशिश नहीं कर रहे थे। ब्रू सिर्फ इस उपयोग के मामले के लिए डिजाइन नहीं किया गया था। –

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