解决升级 mojave 后 g++ 找不到头文件的问题

Mac 升级 Mojave (10.14) 之后,尝试编译以前编译通过的 C++ 项目,g++-6 提示找不到各种头文件。例如有如下报错。

1
2
3
4
./third_party/catch.hpp:69:33: fatal error: TargetConditionals.h: No such file or directory

^
compilation terminated.

经查,这是因为 macOS 在升级过程中,移除了过时的开发者工具。(不得不说这种无声移除的设计非常傻屄)解决的办法也很简单,重新安装 Command Line Tools 及其头文件包即可。

1
2
xcode-select --install
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

参考:https://forums.developer.apple.com/thread/104296