Clang ++ обновлен, не может найти определенные заголовки, несмотря на то, что они находятся в каталоге include - PullRequest
0 голосов
/ 20 апреля 2020

Итак, я нахожусь на ma c и хотел поэкспериментировать с последним выпуском llvm, не дожидаясь их передачи в инструменты командной строки xcode.

Итак, я скачал LLVM 10 выпустите готовый двоичный файл со страницы их загрузок и поместите его в папку с именем llvm. Таким образом, исполняемый файл clang можно найти в ~ / SDKs / LLVM / bin.

Я делаю эту программу:

#include <string>
#include <iostream>

int main(int argc, char const *argv[])
{
    std::string myString("Hello World");
    std::cout << myString;
    return 0;
}

и запускаю:

~/SDKs/Clang+LLVM10/bin/clang++ main.cpp

Я получаю эта фатальная ошибка:

~/SDKs/Clang+LLVM10/bin/../include/c++/v1/string.h:60:15: fatal error: 
      'string.h' file not found
#include_next <string.h>
              ^~~~~~~~~~

Что не имеет смысла, потому что я могу найти string.h вручную, используя finder, и он находится прямо в папке, указанной в ошибке.

Я предполагаю, что это как-то связано с тем, что clang ++ сначала ищет в моей системе include-путь, находит там более старый string.h и поэтому выбирает не использовать обновленный string.h, что вызывает ошибку?


Некоторая дополнительная информация, если это поможет:

Запуск этого (нового компилятора)

~/Programming/SDKs/Clang+LLVM10/bin/clang++ -Wp,-v -E -xc -x c++ /dev/null

Дает мне:

clang -cc1 version 10.0.0 based upon LLVM 10.0.0 default target x86_64-apple-darwin18.7.0
ignoring nonexistent directory "/usr/include/c++/v1"
ignoring nonexistent directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 ~/SDKs/Clang+LLVM10/bin/../include/c++/v1
 /usr/local/include
 ~/SDKs/Clang+LLVM10/lib/clang/10.0.0/include
 /System/Library/Frameworks (framework directory)
 /Library/Frameworks (framework directory)
End of search list.
# 1 "/dev/null"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 393 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "/dev/null" 2

Запуск (это это компилятор по умолчанию, который поставляется с моей ма c)

clang++ -Wp,-v -E -xc -x c++ /dev/null

дает мне

clang -cc1 version 11.0.0 (clang-1100.0.33.17) default target x86_64-apple-darwin18.7.0
ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1"
ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include"
ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.0/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)
End of search list.
# 1 "/dev/null"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 374 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "/dev/null" 2
...