我知道这个问题:macOS 'wchar.h' File Not Found 但它没有帮助我。我尝试重新安装xcode,重新安装命令行工具,重新启动系统。 wchar.h文件已就绪,但编译器无法找到它。我还能尝试什么?也许它与sysroot有关?有什么方法可以解决这个问题吗?
macbooks-MacBook-Pro:Rack euphorbium$ sudo make
c++ -Iinclude -Idep/include -Idep/lib/libzip/include -DVERSION=dev -MMD -O3 -march=core2 -ffast-math -g -Wall -DARCH_MAC -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk -mmacosx-version-min=10.7 -DAPPLE -stdlib=libc++ -std=c++11 -stdlib=libc++ -c -o build/src/app.cpp.o src/app.cpp
clang: warning: no such sysroot directory: '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk' [-Wmissing-sysroot]
In file included from src/app.cpp:1:
In file included from include/app.hpp:2:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/vector:265:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/iosfwd:90:
/Library/Developer/CommandLineTools/usr/include/c++/v1/wchar.h:119:15: fatal error:
'wchar.h' file not found
#include_next <wchar.h>
^~~~~~~~~
1 error generated.
make: *** [build/src/app.cpp.o] Error 1
因为wchar.h既存在于xcode应用程序中,也存在于/Library/Developer/CommandLineTools
中,我认为它在一些完全不相关的文件夹中查找它。
答案 0 :(得分:13)
升级到macOS High Sierra后我遇到了同样的问题。在停止处理此错误之前正在编译的项目。就我而言,项目文件是由CMake应用程序生成的。解决方案是再次运行CMake,“删除缓存”和“配置”项目。这更正了make文件中的sysroot目录引用以指向新的SDK并且错误已解决。
答案 1 :(得分:8)
我遇到了同样的问题。我能够通过使用符号链接来修复它。 这就是我所做的:
cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
sudo ln -s MacOSX.sdk MacOSX10.07.sdk
然后输入您的root密码。
注意:您必须使用所需的sdk调整最后一行。
答案 2 :(得分:5)
对于任何在MacOSX Mojave上苦苦挣扎的人来说,answer可以解决这个问题。简而言之:
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
,这将提示您安装Xcode工具。 sudo xcode-select -s /Library/Developer/CommandLineTools
答案 3 :(得分:2)
这是由makefile中设置的不正确的sysroot(设置为较旧的mac os版本)引起的。
答案 4 :(得分:1)
我的系统是macOS Mojave,我通过运行以下命令行解决了此问题:
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
答案 5 :(得分:1)
设置环境变量
SDKROOT="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk"
,然后重新打开终端。这样可以解决标题未找到的问题。
要查看编译器在哪里找到标头,请运行-v
clang -v test.c
答案 6 :(得分:0)
就我而言,这个问题是由于 MacOS 更改了标头的路径。
检查此注释:MacOS release note。
所以解决方案是让编译器可以找到那些头文件。
我的 macOS 版本是 Catalina 10.15,XCode 版本 12.4。对于此版本,似乎不再提供 /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
,因此上述 sulotions 对我不起作用。
这个方法拯救了我的夜晚:Fixing C++ compilation bugs for the MacOS Catalina upgrade。请注意,如果您按照其步骤操作并出现找不到某些全局符号的错误,请不要按其说的修改 LIBRARY_PATH。
答案 7 :(得分:0)
如果您使用的是 CLion,follow these steps :
我花了 3 个小时才找到这个解决方案。
仅供参考,这个项目在 Bug Sur 11.3 上运行良好,但在我升级到 Big Sur 11.4 后无法构建
答案 8 :(得分:-1)
我做了一些愚蠢的操作,但确实解决了问题。
这是我所做的:
我最初是在Mojave的MacBook上使用Homebrew安装c ++的,所以我不得不使用/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
上的安装程序来手动安装Xcode CommandLineTools。然后,我将“ c ++”文件夹的内容从文件夹/Library/Developer/CommandLineTools/usr/include/c++/v1
复制到了我希望丢失的文件位于/usr/local/Cellar/gcc/8.2.0/include/c++/8.2.0
的文件夹中,同时替换了相同名称的文件。
这个技巧奏效了,因为现在丢失的文件“ wchar.h” 就在应有的位置...但是,恐怕您的设置可能不同。