Homebrew와 함께 최근 clang ++를 설치하는 방법은 무엇입니까?


20

난 노력 했어

brew install llvm

그러나 그 후에는에서 clang++*실행 파일을 찾을 수 없습니다 /usr/local.

따라서 내 질문 : Homebrew를 통해 clang ++을 얻는 방법은 무엇입니까?

답변:


18

2018 년 현재 Homebrew Versions 저장소 ( 'tap')가 작동하지 않습니다 .

기본 Homebrew llvm 패키지에는 기본적으로 clang / clang ++이 포함되어 있지 않습니다. 따라서 사전 빌드 된 ( '병') 패키지의 일부가 아닙니다.

하나를 통해 그것을 만들 수 있습니다 :

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 (Continuous Integration) 환경에는 적합하지 않습니다.

그러나 최근 XCode (Travis-CI, 버전 9와 같은 CI 환경에서 사용 가능, 버전 9도 사용 가능)와 함께 제공되는 clang은 더 이상 구식이 아닙니다 (Apple은 판타지 버전 체계를 사용합니다) 업스트림 clang 버전 번호와 일치하지 않지만 cmake는 예를 들어 AppleClang 9.1.0.9020039 버전 4.0.1)을 감지합니다. 따라서 Boost (예 : 버전 1.67)와 같은 공통 종속성으로 C ++ 11 / C ++ 14 소프트웨어를 작성하면 충분합니다.

2016 최첨단

llvmHomebrew 의 패키지에는 clang++기본적으로가 포함되어 있지 않습니다 . 설치시 --with-clang명령 행 에 추가 해야합니다 (예 :) brew install --with-clang llvm. 프리 --with-clang빌드 ( 'bottled') llvm패키지가 하나 밖에 없기 때문에 추가 패키지는 전체 패키지 컴파일을 생성합니다 clang++. 또한 llvm패키지는 비교적 오래되었습니다. 현재 llvm 3.6이 있으며 6 개월 전에 3.7이 릴리스되었습니다.

따라서 병에 든 clang++3.7 을 얻으려면 Homebrew 버전 에서 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에 대해이 작업을 수행하는 경우 제공하는 clang 버전을 사용해야합니다.
Claudiu

7
최신 브루 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

Shadowtalker가 옳았으며 그 이후로 --with-clang논쟁이 제거되었습니다.
MCCCS

@ shadowtalker, brew install --with-toolchain llvm@hangtwenty이 제안하거나 brew install llvm충분하기 때문에 실행해야 합니까? 이 --with-toolchain옵션을 사용하면 사전 빌드 된 (병 / 이진) 패키지를 설치하는 것과 비교하여 패키지가 컴파일되는데 시간이 많이 걸립니다.
maxschlepzig 2018 년

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 / 지방 / 옵션 / LLVM / 빈 / 연타 ++ .


1
흠, 여전히 사전 빌드 된 바이너리 패키지 (예 : '병')를 얻을 수 있습니까? 내가 지정할 때 의미 --with-clang합니까? 지속적인 통합 환경에서이를 호출하려고하기 때문에 묻습니다.
maxschlepzig

존재한다면, 나는 그것에 대해 알고 있지만 그것이 존재한다고 생각하지 않습니다.
jherran

1
실제로, Homebrew 버전을 통해 병에 담긴 버전이 있습니다. 내 답변도 참조하십시오.
maxschlepzig

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
불행히도 homebrew 바이너리 clang이 손상되었습니다. /usr/local/include기본 포함 디렉토리 로 폴더를 포함하지 않으므로 모든 소프트웨어 빌드가 실패합니다. xcode에서 제공하는 Clang에는 fsanitize=leak및 이 없습니다 ccc-analyzer. 따라서 맥 OS의 두 클랜이 고장났습니다. 소스에서 사용 가능한 모든 기능을 사용하여 빌드해야합니다. 그러나 컴파일은 트래비스처럼 CI를 죽일 것입니다. 따라서 애플에 대해서만 별도의 CI를 호스팅하고 유지해야합니다. 애플은 단순한 개발에만 적합하며, 다른 것은 고통이 필요하다.
puchu

3

이제 실행하기에 충분합니다.

brew install llvm

병에는 clang기본적으로 포함 됩니다.


우리는 설명과 맥락을 제공하는 긴 답변을 찾고 있습니다. 한 줄만 대답하지 마십시오. 인용에 이상적으로 답이 적합한 이유를 설명하십시오. 설명이 포함되지 않은 답변은 제거 될 수 있습니다.
테츠 진

@ Tetsujin 나는 당신에게 동의하지만 이것은 본질적으로 완전한 대답입니다. 그것은 완벽하게 무엇을 필요로하는 이유에 대해 설명
라스 닐슨
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.