clang ++, установленный через homebrew (macOS): ошибки компиляции - PullRequest
0 голосов
/ 03 октября 2018

После установки clang ++ (пробовал v. 6.0.1 и 7.0) с:
brew install --with-toolchain llvm

очень тривиальные программы приводят к следующей ошибке:

 In file included from test.cpp:1:
 In file included from /usr/local/Cellar/llvm/7.0.0/include/c++/v1/iostream:38:
 In file included from /usr/local/Cellar/llvm/7.0.0/include/c++/v1/ios:215:
 In file included from /usr/local/Cellar/llvm/7.0.0/include/c++/v1/iosfwd:90:
 /usr/local/Cellar/llvm/7.0.0/include/c++/v1/wchar.h:119:15: fatal error: 'wchar.h' file not found
 #include_next <wchar.h>

Используемая командадля компиляции:

 clang++7() {
    LDFLAGS="-L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib"
    CPPFLAGS="-I/usr/local/opt/llvm/include"
    /usr/local/opt/llvm/bin/clang++ -std=c++11 $CPPFLAGS $LDFLAGS $1
 }

Можно ли использовать официальный кланг вместо версии Apple?
С версией Apple мы даже не знаем, какая это версия LLVM ...

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Похоже, что с Mojave (10.14) Xcode больше не устанавливает системные заголовки в /usr/include.Существует пакет совместимости, который делает это, но он не рекомендуется.

Вместо этого официальное решение - инструменты для поиска заголовков в /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk.Этот путь можно получить из

xcrun --show-sdk-path

Примечания к выпуску скажем

Пакет инструментов командной строки устанавливает системные заголовки macOS внутри macOS SDK.Программное обеспечение, которое компилируется с установленными инструментами, будет искать заголовки в MacOS SDK, предоставляемом Xcode по адресу:

/ Applications / Xcode.app / Contents / Developer / Platforms / MacOSX.platform / Developer / SDKs / MacOSX10.14.sdk

или Инструменты командной строки по адресу:

/ Библиотека / Разработчик / CommandLineTools / SDKs / MacOSX.sdk

в зависимости от того, что выбрано с помощью xcode-select.

Если вы построили clang самостоятельно, этого можно достичь, передав опцию -isysroot для лязга:

clang++ -isysroot "$(xcrun --show-sdk-path)" …

См. Также: https://github.com/Homebrew/homebrew-core/issues/32765

0 голосов
/ 14 декабря 2018

Это работает для меня, чтобы добавить опцию -I (минус глаз) в командной строке clang ++, указывая на /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk / usr / include

...