Homebrew ile son clang ++ nasıl kurulur?


20

denedim

brew install llvm

ama ondan sonra clang++*altında çalıştırılabilir bir dosya bulamıyorum /usr/local.

Böylece benim sorum: Homebrew üzerinden clang ++ almak nasıl?

Yanıtlar:


18

2018 itibariyle, Homebrew Versions deposu ('musluk') hizmet dışıdır .

Homebrew llvm paketi hala varsayılan olarak clang / clang ++ içermemektedir. Bu nedenle, önceden oluşturulmuş ('şişelenmiş') paketin bir parçası değildir.

Biri onu şu şekilde inşa edebilir:

brew install --with-toolchain llvm

Ve sonra örneğin aracılığıyla kullanın:

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

Ancak bu --with-toolchainuyarılmış yapı çok uzun zaman alır ve bu nedenle sürekli bir entegrasyon (CI) ortamında uygun değildir.

Bununla birlikte, en son XCode ile gelen clang (Travis-CI gibi CI ortamlarında mevcuttur, Sürüm 9, varsayılan 10'dur), eskisi gibi eskimiş bir durum değildir (Apple, bir fantezi versiyonunu kullanır) upstream clang sürüm numaralarına uymayan clang için, ancak cmake, örneğin AppleClang 9.1.0.9020039 sürüm 4.0.1'i algılar). Bu nedenle, C ++ 11 / C ++ 14 yazılımının Boost gibi ortak bağımlılıklara sahip olması yeterlidir (örn. Sürüm 1.67).

2016 Sanatın Devleti

llvmHomebrew içindeki paket clang++varsayılan olarak içermez . Takarken --with-clang, komut satırına eklemeniz gerekir (örn. brew install --with-clang llvm). Ekstra --with-clang, tam bir paket derlemesi sağlar, çünkü sadece bir önceden oluşturulmuş ('şişelenmiş') llvmpaket vardır (olmadan clang++). Buna ek olarak: llvmpaket nispeten eski - şu anda llvm 3.6 - 3.7, 6 ay önce piyasaya sürüldü.

Bu nedenle, şişelenmiş bir clang++3.7 elde etmek için llvm paketini Homebrew Versions'dan yüklemelisiniz :

$ brew tap homebrew/versions
$ brew install llvm37

Daha sonra altında kullanılabilir:

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

Formül ayrıca şunları da not eder:

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"

Bunu Emscripten için yapıyorsanız, sağladıkları clang sürümünü kullanmanız gerektiğini unutmayın.
Claudiu

7
Son Homebrew llvmiçinde (3.9.1) homebrew-coremusluk şimdi içerir clang, clang++altında vb/usr/local/opt/llvm/bin
shadowtalker

1
@ Ssdecontrol'ün yorumuna tamamlayıcı: --with-toolchainBazı kullanıcıların ihtiyaç duyabileceği bir tartışma var . Burada daha fazla bilgi, embeddedartistry.com/blog/2017/2/20/installing-clangllvm-on-osx
driftcatcher

Shadowtalker haklı ve o zamandan beri --with-clangargüman kaldırıldı.
MCCCS

@shadowtalker, brew install --with-toolchain llvm@hangtwenty'ın önerdiği veya brew install llvmyeterli olduğu şekilde yürütmek zorunda mıyım ? Bu --with-toolchainseçenekle, paket önceden derlenmiş (şişelenmiş / ikili) bir paket takmaya kıyasla - çok zaman alıcı - derlenir.
maxschlepzig

4

--with-clangSeçeneği ile yüklemek zorundasınız :

$ 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

Ardından, bulacaksınız clang++üzerinde / usr / local / opt / LLVM / bin / clang ++ .


1
Hm, önceden oluşturulmuş bir ikili paket (yani bir 'şişe') almak hala mümkün mü? Ne zaman belirtirim --with-clang? Soruyorum çünkü bunu sürekli bir entegrasyon ortamında aramak niyetindeyim ...
maxschlepzig

Varsa, bunu biliyorum, ama bunun olduğunu sanmıyorum.
jherran

1
Aslında, Homebrew Versions üzerinden şişelenmiş bir sürümü var. Ayrıca cevabımı gör.
maxschlepzig

3

--With-clang ve --with-toolchain seçenekleri artık çalışmıyor. Bu benim için çalıştı:

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

İle derledim

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

1
Ne yazık ki homebrew ikili clang bozuldu. Bu içermez /usr/local/includetüm yazılım oluşturma işlemi başarısız olur, böylece baz dir dahil olarak klasör. Xcode tarafından sağlanan Clang sahip değildir fsanitize=leakve ccc-analyzer. Bu yüzden mac os üzerindeki her iki clanc koptu. Kaynaktan etkin olan tüm özellikler ile oluşturmalısınız. Fakat derleme CI'nizi travis benzeri öldürür. Bu nedenle, yalnızca elma için ayrı CI'yi barındırmanız ve korumanız gerekir. Elma sadece basit bir gelişme için iyidir, başka bir şey acı ister.
puchu

3

Şimdi çalıştırmak için yeterli:

brew install llvm

Şişe şimdi clangvarsayılan olarak içerir .


Bazı açıklamalar ve bağlamlar sağlayan uzun cevaplar arıyoruz. Sadece bir satırlık cevap vermeyin; Cevabınızın neden doğru olduğunu, ideal olarak alıntılarla açıklayın. Açıklama içermeyen cevaplar kaldırılabilir.
Tetsujin

@Tetsujin Size katılıyorum, ama bu aslında tam bir cevap. Neye ihtiyaç duyulduğunu ve nedenini tam olarak açıklar
Lars Nielsen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.