답변:
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 소프트웨어를 작성하면 충분합니다.
llvm
Homebrew 의 패키지에는 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"
llvm
에서 (3.9.1) homebrew-core
탭은 이제 포함 clang
, clang++
아래, 등/usr/local/opt/llvm/bin
--with-toolchain
이제 일부 사용자가 필요할 수 있는 논쟁이 있습니다. 여기에 더 많은 정보를 원하시면, embeddedartistry.com/blog/2017/2/20/installing-clangllvm-on-osx
--with-clang
논쟁이 제거되었습니다.
brew install --with-toolchain llvm
@hangtwenty이 제안하거나 brew install llvm
충분하기 때문에 실행해야 합니까? 이 --with-toolchain
옵션을 사용하면 사전 빌드 된 (병 / 이진) 패키지를 설치하는 것과 비교하여 패키지가 컴파일되는데 시간이 많이 걸립니다.
--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 / 빈 / 연타 ++ .
--with-clang
합니까? 지속적인 통합 환경에서이를 호출하려고하기 때문에 묻습니다.
--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
/usr/local/include
기본 포함 디렉토리 로 폴더를 포함하지 않으므로 모든 소프트웨어 빌드가 실패합니다. xcode에서 제공하는 Clang에는 fsanitize=leak
및 이 없습니다 ccc-analyzer
. 따라서 맥 OS의 두 클랜이 고장났습니다. 소스에서 사용 가능한 모든 기능을 사용하여 빌드해야합니다. 그러나 컴파일은 트래비스처럼 CI를 죽일 것입니다. 따라서 애플에 대해서만 별도의 CI를 호스팅하고 유지해야합니다. 애플은 단순한 개발에만 적합하며, 다른 것은 고통이 필요하다.