На прошлой неделе я бился головой об стену, пытаясь скомпилировать проект на моем M1 Mac Mini (macOS Big Sur 11.4). Публикация здесь, а не как проблема на странице проекта Github, потому что это похоже на общую проблему с набором инструментов. (Примечание: я смог скомпилировать тот же код без каких-либо проблем на моей машине Win10 под WSL2 с дистрибутивом на основе Debian и всеми зависимостями, установленными через apt-get)
Ошибка (одна из многих, но все они связаны с долгой вариацией функций):
In file included from include/trick/Clock.hh:11:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/string:506:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/string_view:175:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__string:57:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/algorithm:643:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/memory:668:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/typeinfo:60:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/exception:81:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cstdlib:85:
/Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/stdlib.h:148:12: error: no member named 'lldiv' in the global namespace; did you mean 'ldiv'?
return ::lldiv(__x, __y);
Я пробовал следовать советам некоторых комментариев в эта ветка, но никто не помог.
- Установил XCode.app, изменил путь к SDK и удалил каталог CLT (с тех пор я вернулся к установке только CLT)
- Добавлено
set(CMAKE_OSX_SYSROOT /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk)
вCMakeLists.txt
проекта - Явная установка clang, gcc, g ++ и т. Д. В качестве компилятора во флагах
./configure
- Явное включение
-I/path/to/MacOSX.sdk/usr/include
в CXXFLAGS, установленное в ./configure
eric@Mac-Wahlberg ~
╰─$ clang -v 1 ↵
Apple clang version 12.0.5 (clang-1205.0.22.11)
Target: arm64-apple-darwin20.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
╭─eric@Mac-Wahlberg ~
╰─$ gcc -v
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 12.0.5 (clang-1205.0.22.11)
Target: arm64-apple-darwin20.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
╭─eric@Mac-Wahlberg ~
╰─$ g++ -v
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 12.0.5 (clang-1205.0.22.11)
Target: arm64-apple-darwin20.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
╭─eric@Mac-Wahlberg ~
╰─$ xcrun --sdk macosx --show-sdk-path
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
eric@Mac-Wahlberg ~/Code/trick ‹15534f7›
╰─$ gcc -Wp,-v -E -
clang -cc1 version 12.0.5 (clang-1205.0.22.11) default target arm64-apple-darwin20.5.0
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
/Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/include
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
/Library/Developer/CommandLineTools/usr/include
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)
End of search list.
Еще несколько терминальных копипаст, которые могут быть полезны, а могут и не пригодиться
╭─eric@Mac-Wahlberg ~/Code/trick ‹15534f7*›
╰─$ cat /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/C++/v1/stdlib.h | grep "lldiv"
lldiv_t // C99
lldiv_t div(long long numer, long long denom); // C++0X
lldiv_t lldiv(long long numer, long long denom); // C99
#undef lldiv
inline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x,
return ::lldiv(__x, __y);