我试过了
brew install llvm
但是在那之后我找不到任何clang++*
可执行文件/usr/local
。
因此,我的问题是:如何通过Homebrew获得clang ++?
我试过了
brew install llvm
但是在那之后我找不到任何clang++*
可执行文件/usr/local
。
因此,我的问题是:如何通过Homebrew获得clang ++?
Answers:
截至2018年,Homebrew版本库('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)环境中使用。
但是,最近的XCode附带的clang(可在Travis-CI等CI环境中使用,默认版本为9,10也可用)不再像以前那样过时了(Apple使用幻想版本方案)对于与上游clang版本号不匹配但cmake检测到例如AppleClang 9.1.0.9020039 4.0.1版本的clang)。因此,构建具有Boost等常见依赖项(例如1.67版)的C ++ 11 / C ++ 14软件就足够了。
默认情况下llvm
,Homebrew中的软件包不包含clang++
。安装时,您必须添加--with-clang
到命令行(例如brew install --with-clang llvm
)。多余的部分将--with-clang
生成完整的软件包,因为只有一个预构建(“瓶装”)llvm
软件包可用(无clang++
)。除此之外:该llvm
软件包相对较旧-当前具有llvm 3.6-6个月前发布了3.7。
因此,要获取瓶装clang++
3.7,必须从Homebrew Versions安装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
--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 / local / opt / llvm / bin / clang ++上找到。
--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
and ccc-analyzer
。因此,mac os上的两个c都被打破了。您必须使用从源代码启用的所有功能来构建它。但是编译会像travis一样杀死您的CI。因此,您只必须为苹果托管和维护单独的CI。苹果仅对简单开发有利,其他任何事情都需要痛苦。
现在足以运行:
brew install llvm
现在clang
,该瓶子默认包含。