я пробовал
brew install llvm
но после этого я не могу найти clang++*
исполняемый файл под /usr/local
.
Таким образом, мой вопрос: как получить Clang ++ через Homebrew?
источник
я пробовал
brew install llvm
но после этого я не могу найти clang++*
исполняемый файл под /usr/local
.
Таким образом, мой вопрос: как получить Clang ++ через Homebrew?
С 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).
Тем не менее, Clang, который поставляется с недавним XCode (который доступен в CI-средах, таких как Travis-CI, версия 9 по умолчанию, 10 также доступна) уже не так устарел, как раньше (Apple использует фантастическую схему версии для clang, который не совпадает с номерами версий вышестоящего clang, но cmake обнаруживает, например, для AppleClang 9.1.0.9020039 версию 4.0.1). Таким образом, достаточно создать программное обеспечение C ++ 11 / C ++ 14 с общими зависимостями, такими как Boost (например, версия 1.67).
llvm
Пакет в Homebrew не включает в себя clang++
, по умолчанию. При установке его необходимо добавить --with-clang
в командную строку (например brew install --with-clang llvm
). Extra --with-clang
дает полную компиляцию пакета, потому что llvm
доступен только один пакет prebuild («бутылочный») (без clang++
). В дополнение к этому: llvm
пакет является относительно старым - в настоящее время он имеет llvm 3.6 - где 3.7 был выпущен 6 месяцев назад.
Таким образом, чтобы получить бутылку clang++
3.7, вы должны установить пакет llvm из Homebrew Versions :
$ 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/install-clangllvm-on-osx--with-clang
аргумент был удален.brew install --with-toolchain llvm
как подсказывает @hangtwenty илиbrew install llvm
достаточно? С помощью этой--with-toolchain
опции пакет компилируется - что занимает очень много времени - по сравнению с простой установкой предварительно собранного (бутылочного / двоичного) пакета.Вы должны установить его с
--with-clang
опцией:Затем вы найдете
clang++
в / usr / local / opt / llvm / bin / clang ++ .источник
--with-clang
? Я спрашиваю, потому что я собираюсь назвать это в среде непрерывной интеграции ...Опции --with-clang и --with-toolchain больше не работают. Это сработало для меня:
Я скомпилировал с
источник
/usr/local/include
папку, так как база включает dir, поэтому сборка программного обеспечения завершается неудачно. Clang, предоставляемый xcode, не имеетfsanitize=leak
иccc-analyzer
. Так что оба лязга на Mac OS сломаны. Вы должны построить его со всеми функциями, включенными из источника. Но компиляция убьет ваш CI, как Трэвис. Таким образом, вы должны размещать и поддерживать отдельный CI только для Apple. Apple хороша только для простого развития, все остальное требует боли.Теперь достаточно запустить:
Бутылка теперь включает
clang
по умолчанию.источник