Homebrew के साथ हाल ही में क्लैंग ++ कैसे स्थापित करें?


20

मैंने कोशिश की

brew install llvm

लेकिन उसके बाद मुझे कोई clang++*निष्पादन योग्य नहीं मिल सकता है /usr/local

इस प्रकार मेरा सवाल है: Homebrew के माध्यम से क्लेंग ++ कैसे प्राप्त करें?

जवाबों:


18

2018 तक, होमब्रे वर्जन रिपॉजिटरी ('टैप') सेवा से बाहर है

स्टॉक Homebrew llvm पैकेज में अभी भी डिफ़ॉल्ट रूप से क्लैंग / क्लैंग ++ शामिल नहीं है। इस प्रकार, यह प्रीबिल्ट ('बोतलबंद') पैकेज का हिस्सा नहीं है।

कोई इसे बना सकता है:

brew install --with-toolchain llvm

और फिर उदाहरण के लिए इसका उपयोग करें:

$ PATH="/usr/local/opt/llvm/bin:$PATH" \
    LDFLAGS='-L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib' \
    cmake ...

लेकिन यह --with-toolchainप्रेरित निर्माण बहुत लंबा समय लेता है और इस प्रकार एक सतत एकीकरण (CI) वातावरण में अनुपयुक्त है।

हालाँकि, हाल ही में XCode (जो ट्रैविस-सीआई जैसे CI वातावरण में उपलब्ध है, संस्करण 9 डिफ़ॉल्ट रूप से उपलब्ध है, 10 उपलब्ध है, भी) वह पुराना नहीं है जैसा कि पहले हुआ करता था (Apple एक फंतासी संस्करण योजना का उपयोग करता है क्लैंग के लिए जो अपस्ट्रीम क्लैंग वर्जन नंबरों से मेल नहीं खाता है, लेकिन AppleClang 9.1.0.9020039 संस्करण 4.0 के लिए उदाहरण के लिए cmake का पता लगाता है।)। इस प्रकार, बूस्ट (जैसे संस्करण 1.67) जैसी सामान्य निर्भरता के साथ C ++ 11 / C ++ 14 सॉफ़्टवेयर का निर्माण करना पर्याप्त है।

2016 स्टेट ऑफ द आर्ट

llvmHomebrew में पैकेज में शामिल नहीं है clang++डिफ़ॉल्ट रूप से,। इसे स्थापित करते समय, आपको --with-clangकमांड लाइन (जैसे brew install --with-clang llvm) में जोड़ना होगा । अतिरिक्त --with-clangपैदावार एक पूर्ण पैकेज संकलित करता है क्योंकि वहाँ केवल एक ही ('बोतलबंद') llvmपैकेज उपलब्ध है (बिना clang++)। इसके अलावा: llvmपैकेज अपेक्षाकृत पुराना है - वर्तमान में इसका एलएलवीएम 3.6 है - जहां 3.7 को 6 महीने पहले जारी किया गया था।

इस प्रकार, बोतलबंद clang++3.7 पाने के लिए आपको होमब्रे संस्करणों से llvm पैकेज स्थापित करना होगा :

$ brew tap homebrew/versions
$ brew install llvm37

यह इसके बाद उपलब्ध है:

/usr/local/bin/clang++-3.7

सूत्र भी नोट करता है:

To link to libc++, something like the following is required:
  CXX="clang++-3.7 -stdlib=libc++"
  CXXFLAGS="$CXXFLAGS -nostdinc++ -I/usr/local/opt/llvm37/lib/llvm-3.7/include/c++/v1"
  LDFLAGS="$LDFLAGS -L/usr/local/opt/llvm37/lib/llvm-3.7/lib"

ध्यान दें कि यदि आप Emscripten के लिए ऐसा कर रहे हैं, तो आपको उनके द्वारा प्रदान किए गए क्लैंग संस्करण का उपयोग करना होगा।
Claudiu

7
नवीनतम Homebrew llvm(3.9.1) में homebrew-coreनल अब भी शामिल है clang, clang++आदि के तहत/usr/local/opt/llvm/bin
shadowtalker

1
@ Ssdecontrol की टिप्पणी पर लागू: --with-toolchainअब एक तर्क है कि कुछ उपयोगकर्ताओं की आवश्यकता हो सकती है। अधिक जानकारी यहाँ, embeddedartistry.com/blog/2017/2/20/installing-clangllvm-on-osx
driftcatcher

शैडोअल्कर सही है, और तब से, --with-clangतर्क हटा दिया गया है।
MCCCS

@shadowtalker, क्या मुझे निष्पादित करना होगा brew install --with-toolchain llvmक्योंकि @hangtwenty सुझाव दे रहा है या brew install llvmपर्याप्त है? साथ --with-toolchainजो बहुत समय लेने वाली है - - बस एक पहले से बनाए गए (बोतलबंद / बाइनरी) पैकेज को स्थापित करने की तुलना में विकल्प पैकेज संकलित किया गया है।
मैक्सचेलपिजिग सेप

4

आपको इसे --with-clangविकल्प के साथ स्थापित करना होगा :

$ brew install --with-clang llvm
==> Installing dependencies for llvm: cmake
==> Installing llvm dependency: cmake
==> Downloading https://homebrew.bintray.com/bottles/cmake-3.4.3.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring cmake-3.4.3.el_capitan.bottle.tar.gz
==> Caveats
Emacs Lisp files have been installed to:
  /usr/local/share/emacs/site-lisp/cmake
==> Summary
🍺  /usr/local/Cellar/cmake/3.4.3: 1,980 files, 27.4M
==> Installing llvm
==> Downloading http://llvm.org/releases/3.6.2/llvm-3.6.2.src.tar.xz
######################################################################## 100.0%
==> Downloading http://llvm.org/releases/3.6.2/cfe-3.6.2.src.tar.xz
######################################################################## 100.0%
==> cmake -G Unix Makefiles /private/tmp/llvm20160211-42310-16fdrbw/llvm-3.6.2.src -DCMAKE_C_FLAGS_RELEASE=-DNDEBUG -DCMAKE_CXX_FLAGS_RELEAS
==> make
==> make install
==> Caveats
LLVM executables are installed in /usr/local/opt/llvm/bin.
Extra tools are installed in /usr/local/opt/llvm/share/llvm.

This formula is keg-only, which means it was not symlinked into /usr/local.

OS X already provides this software and installing another version in
parallel can cause all kinds of trouble.

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

    LDFLAGS:  -L/usr/local/opt/llvm/lib
    CPPFLAGS: -I/usr/local/opt/llvm/include


If you need Python to find bindings for this keg-only formula, run:
  echo /usr/local/opt/llvm/lib/python2.7/site-packages >> /usr/local/lib/python2.7/site-packages/llvm.pth
==> Summary
🍺  /usr/local/Cellar/llvm/3.6.2: 1,350 files, 338.2M, built in 21 minutes 18 seconds

उसके बाद, आप मिल जाएगा clang++पर / usr / स्थानीय / opt / LLVM / bin / बजना ++


1
हम्म, क्या अब भी पूर्व-निर्मित बाइनरी पैकेज (यानी 'बोतल') प्राप्त करना संभव है? मेरा मतलब है जब निर्दिष्ट --with-clang? मैं पूछ रहा हूं क्योंकि मैं एक निरंतर एकीकरण वातावरण में कॉल करने का इरादा रखता हूं ...
maxschlepzig

यदि मौजूद है, तो मुझे इसके बारे में पता है, लेकिन मुझे नहीं लगता कि यह मौजूद है।
झरन

1
दरअसल, Homebrew संस्करणों के माध्यम से एक बोतलबंद संस्करण उपलब्ध है। मेरा जवाब भी देखिए।
मैक्सक्लेपजिग

3

--With-clang और --with-toolchain विकल्प अब काम नहीं करते हैं। यह मेरे लिए काम किया:

brew install llvm
cd /Library/Developer/CommandLineTools/Packages/
open .
run the installer

मैंने संकलन किया

CC=/usr/local/cellar/llvm/7.0.1/bin/clang CCX=/usr/local/cellar/llvm/7.0.1/bin/clang++ make

1
दुर्भाग्य से होमब्रेव बाइनरी क्लैंग टूट गया है। इसमें /usr/local/includeफ़ोल्डर शामिल नहीं है क्योंकि आधार में dir शामिल है, इसलिए सभी सॉफ़्टवेयर बिल्ड विफल हो जाते हैं। Xcode द्वारा प्रदान किए गए क्लैंग में नहीं है fsanitize=leakऔर ccc-analyzer। तो मैक ओएस पर दोनों clangs टूट गया है। आपको इसे स्रोत से सक्षम सभी सुविधाओं के साथ बनाना होगा। लेकिन संकलन आपके सीआई को ट्रैविस की तरह मार देगा। इसलिए आपको केवल सेब के लिए अलग सीआई की मेजबानी और रखरखाव करना होगा। सेब केवल सरल विकास के लिए अच्छा है, और कुछ भी दर्द की आवश्यकता है।
पुचु

3

अब यह चलाने के लिए पर्याप्त है:

brew install llvm

बोतल में अब clangडिफ़ॉल्ट रूप से शामिल है।


हम लंबे उत्तर की तलाश कर रहे हैं जो कुछ स्पष्टीकरण और संदर्भ प्रदान करते हैं। केवल एक-पंक्ति का उत्तर न दें; समझाएं कि आपका उत्तर सही क्यों है, आदर्श रूप से उद्धरणों के साथ। स्पष्टीकरण को शामिल नहीं करने वाले उत्तरों को हटाया जा सकता है।
टेटसुजिन

@ टेट्सुजिन मैं आपसे सहमत हूं, लेकिन यह अनिवार्य रूप से एक पूर्ण उत्तर है। यह पूरी तरह से वर्णन करता है कि क्या जरूरत है और क्यों
लार्स नीलसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.